sql >> Databasteknik >  >> RDS >> Mysql

MySQL - BETWEEN kommer inte att välja korrekta resultat

Se det här relaterade fråga.

Som andra har nämnt är ditt primära problem inte att ta hänsyn till tiden. Några alternativ för att hantera det:

  1. Använd en funktion för att konvertera DateTime till ett Datum. Jag rekommenderar inte det här alternativet, eftersom det sannolikt kommer att göra funktionen ej sargebar .

  2. Utöka din BETWEEN för att uttryckligen inkludera dagens sista ögonblick:(obs:detta är det senaste möjliga värdet som MS SQL kan lagra, vet inte om MySQL har samma värde)

    SELECT * FROM `punches` WHERE `date` 
    BETWEEN '08/20/11 00:00:00.000' AND '08/31/11 23:59:59.997'
    
  3. Använd en < för det övre värdet

    SELECT * FROM `punches` WHERE `date` >= '08/20/11' AND `date` < '09/01/11'
    

Jag tror faktiskt att det sista är lättare, i de flesta situationer.

Jag antar att du kan göra andra saker, som att ändra kolumnens datatyp, men jag har här antagit att du bara är intresserad av att ändra frågan.

** Ansvarsfriskrivning:Jag är en MS SQL-kille, inte MySQL



  1. Hur genererar man data i MySQL?

  2. Använder Dapper med Oracle

  3. Jag försöker en enkel fråga med parametern in med mysql 5.5 genom jdbc-kod

  4. Skaffa mySQL MONTH() för att använda inledande nollor?