sql >> Database >  >> RDS >> Mysql

Geen gewenste output krijgen na het uitvoeren van een QoQ

In geheugenquery's (QoQ's) kunnen lastig zijn als het gaat om gegevenstypen. Ze zijn veel minder op de hoogte van impliciete gegevenstypeconversies dan een database zou zijn. Door MySQL's date_format . te gebruiken functie, converteert u feitelijk de datetime-waarden naar strings . Dus wanneer u uw QoQ uitvoert, voert CF mogelijk een string uit vergelijking, wat heel andere resultaten zou opleveren dan een datum vergelijking. Zou kunnen verklaren waarom je de verkeerde resultaten krijgt.

Probeer uw database te wijzigen query om een ​​datetime-waarde te retourneren in plaats van een tekenreeks:

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

Bijwerken:

Een andere optie is om de waarde te CAST als een DATE in je QoQ. Dat zou de QoQ dwingen om een ​​datumvergelijking uit te voeren, in plaats van een stringvergelijking:

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


  1. inner join en waar in() clausule prestaties?

  2. Meerdere rijen samenvoegen en groeperen in Oracle

  3. SSL gebruiken om vanuit PHP verbinding te maken met mySQL

  4. Hoe te controleren welke sloten op een tafel worden vastgehouden?