sql >> Database teknologi >  >> RDS >> Mysql

Får ikke det ønskede output efter at have udført en QoQ

I hukommelsesforespørgsler (QoQ'er) kan være vanskelige, når det kommer til datatyper. De er langt mindre vidende om implicitte datatypekonverteringer, end en database ville være. Ved at bruge MySQL's date_format funktion, konverterer du faktisk datetime-værdierne til strenge . Så når du kører din QoQ, kan CF faktisk udføre en streng sammenligning, hvilket ville give meget andre resultater end en dato sammenligning. Kan forklare hvorfor du får de forkerte resultater.

Prøv at ændre din database forespørgsel for at returnere en datetime-værdi i stedet for en streng:

SELECT 
   COUNT(Timedetail) as Occurances
   , STR_TO_DATE( DATE_FORMAT(Timedetail,'%m-%d-%Y'), '%m-%d-%Y') AS Timedetail
FROM   ....
WHERE  ...

Opdatering:

En anden mulighed er at CAST værdien som en DATE i din QoQ. Det ville tvinge QoQ til at udføre en datosammenligning i stedet for en strengsammenligning:

WHERE  CAST(Timedetail AS DATE) >= <cfqueryparam value="#form.startdate#" 
                                          cfsqltype="cf_sql_date"> 


  1. MYSQL:Sådan JOINDER du to tabeller på den samme forespørgsel, der refererer til den samme tabel to gange

  2. MySQL:ALTER IGNORE TABLE TILFØJ UNIK, hvad vil blive afkortet?

  3. Hvorfor får jeg denne SQLSyntaxErrorException:ORA-00933:SQL-kommando blev ikke afsluttet korrekt, når jeg forsøger at udføre denne JDBC-forespørgsel?

  4. Kan ikke se mySQL COUNT fra 3. tabel