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

MySQL - BETWEEN wählt keine korrekten Ergebnisse aus

Siehe dazu Frage.

Wie andere bereits erwähnt haben, besteht Ihr Hauptproblem darin, die Zeit nicht zu berücksichtigen. Ein paar Optionen, um damit umzugehen:

  1. Verwenden Sie eine Funktion, um DateTime in ein Date umzuwandeln. Ich empfehle diese Option nicht, da sie wahrscheinlich die Funktion nicht sargefähig .

  2. Erweitern Sie Ihr BETWEEN ausdrücklich den letzten Moment des Tages einschließen:(Hinweis:Dies ist der letzte mögliche Wert, den MS SQL speichern kann, ich weiß nicht, ob MySQL denselben Wert hat)

    SELECT * FROM `punches` WHERE `date` 
    BETWEEN '08/20/11 00:00:00.000' AND '08/31/11 23:59:59.997'
    
  3. Verwenden Sie einen < für den oberen Wert

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

Ich denke tatsächlich, dass letzteres in den meisten Situationen einfacher ist.

Ich nehme an, Sie könnten andere Dinge tun, wie den Datentyp der Spalte ändern, aber ich bin hier davon ausgegangen, dass Sie nur daran interessiert sind, die Abfrage zu ändern.

** Haftungsausschluss:Ich bin ein MS SQL-Typ, nicht MySQL