Mysql
 sql >> Base de données >  >> RDS >> Mysql

Ne pas obtenir la sortie souhaitée après l'exécution d'un QoQ

Les requêtes en mémoire (QoQ) peuvent être délicates en ce qui concerne les types de données. Ils sont beaucoup moins au fait des conversions de types de données implicites qu'une base de données. En utilisant le date_format de MySQL fonction, vous convertissez en fait les valeurs datetime en chaînes . Ainsi, lorsque vous exécutez votre QoQ, CF peut en fait exécuter une chaîne comparaison, qui donnerait des résultats très différents d'une date comparaison. Cela pourrait expliquer pourquoi vous obtenez de mauvais résultats.

Essayez de changer votre base de données query pour renvoyer une valeur datetime au lieu d'une chaîne :

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

Mise à jour :

Une autre option consiste à CAST la valeur en tant que DATE dans votre QoQ. Cela obligerait le QoQ à effectuer une comparaison de date, au lieu d'une comparaison de chaîne :

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