Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Keine gewünschte Ausgabe nach Ausführung einer QoQ

In-Memory-Abfragen (QoQs) können schwierig sein, wenn es um Datentypen geht. Sie sind mit impliziten Datentypkonvertierungen weitaus weniger vertraut als eine Datenbank. Durch die Verwendung von MySQLs date_format -Funktion konvertieren Sie eigentlich die datetime-Werte in Strings . Wenn Sie also Ihr QoQ ausführen, führt CF möglicherweise tatsächlich eine Zeichenfolge aus Vergleich, der ganz andere Ergebnisse liefern würde als ein Datum Vergleich. Könnte erklären, warum Sie die falschen Ergebnisse erhalten.

Versuchen Sie, Ihre Datenbank zu ändern Abfrage, um einen datetime-Wert anstelle einer Zeichenfolge zurückzugeben:

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

Aktualisierung:

Eine andere Möglichkeit besteht darin, den Wert als DATE zu CAST in Ihrem QoQ. Das würde QoQ dazu zwingen, einen Datumsvergleich anstelle eines Zeichenfolgenvergleichs durchzuführen:

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