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

Non ottenere l'output desiderato dopo l'esecuzione di un QoQ

Le query in memoria (QoQ) possono essere complicate quando si tratta di tipi di dati. Sono molto meno esperti sulle conversioni dei tipi di dati impliciti rispetto a un database. Utilizzando date_format di MySQL funzione, stai effettivamente convertendo i valori datetime in stringhe . Quindi, quando esegui il tuo QoQ, CF potrebbe effettivamente eseguire una stringa confronto, che darebbe risultati molto diversi rispetto a una data confronto. Potrebbe spiegare perché stai ottenendo i risultati sbagliati.

Prova a cambiare il tuo database query per restituire un valore datetime anziché una stringa:

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

Aggiornamento:

Un'altra opzione consiste nel CAST del valore come DATE nel tuo QoQ. Ciò costringerebbe il QoQ a eseguire un confronto di date, invece di un confronto di stringhe:

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