sql >> Databáze >  >> RDS >> Mysql

Po provedení QoQ nedostává požadovaný výstup

Dotazy v paměti (QoQ) mohou být složité, pokud jde o datové typy. Jsou mnohem méně zdatní v implicitních převodech datových typů než databáze. Pomocí date_format MySQL ve skutečnosti převádíte hodnoty datetime na řetězce . Takže když spustíte QoQ, CF může ve skutečnosti provádět řetězec srovnání, které by přineslo velmi odlišné výsledky než datum srovnání. Mohl by vysvětlit, proč dostáváte špatné výsledky.

Zkuste změnit svou databázi dotaz na vrácení hodnoty datetime namísto řetězce:

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

Aktualizace:

Další možností je přenést hodnotu jako DATE ve vašem QoQ. To by přinutilo QoQ provést porovnání data namísto porovnání řetězců:

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


  1. Rozdíl mezi CTE a SubQuery?

  2. Jaké jsou výhody databáze prodejů?

  3. MYSQL – Porovnejte TEĎ () a datum v pařížském časovém pásmu v požadavku

  4. Zřetězit více řádků do jednotlivých řádků v MySQL