Heim >Datenbank >MySQL-Tutorial >Wie erreicht man genaue Datumsvergleiche mit DATE_FORMAT() in MySQL?
MySQL-Datumsvergleich mit DATE_FORMAT()
In diesem Artikel erfahren Sie, wie Sie Datumsvergleiche in MySQL mit DATE_FORMAT() durchführen. Funktion, die ein spezifisches Problem behebt, mit dem ein Benutzer beim Vergleichen von Daten konfrontiert ist.
Das Problem
Der Benutzer stand beim Vergleichen von Daten mit DATE_FORMAT() vor einer Herausforderung. Die Daten wurden im folgenden Format gespeichert: „%d-%m-%Y“, ein nicht leicht sortierbares Format. Mit der folgenden Abfrage versuchte der Benutzer, die Daten zu vergleichen:
<code class="sql">SELECT DATE_FORMAT(DATE(starttime), '%d-%m-%Y') FROM data WHERE DATE_FORMAT(DATE(starttime), '%d-%m-%Y') >= '02-11-2012';</code>
Das Ergebnis enthielt jedoch „28.10.2012“, was den Erwartungen des Benutzers nicht entsprach.
Die Lösung
Das Problem entsteht, weil wir Zeichenfolgen statt Datumsangaben vergleichen. DATE_FORMAT() wandelt ein Datum in eine Zeichenfolge um und Zeichenfolgen werden lexikografisch verglichen. In diesem Fall ist „28-10-2012“ lexikografisch gesehen größer als „02-11-2012“, auch wenn „02-11-2012“ ein späteres Datum ist.
Um Daten genau zu vergleichen, benötigen wir um sie als Datumsangaben und nicht als Zeichenfolgen zu vergleichen. Wir können die Funktion DATE() verwenden, um die Datumskomponente aus dem Startzeitfeld zu extrahieren und dann die Datumsangaben mit dem Operator >= zu vergleichen, wie in der folgenden Abfrage gezeigt:
<code class="sql">SELECT DATE_FORMAT(DATE(starttime), '%d-%m-%Y') FROM data WHERE DATE(starttime) >= DATE('2012-11-02');</code>
Diese Abfrage wird korrekt ausgeführt Vergleichen Sie die Daten und schließen Sie „28.10.2012“ aus dem Ergebnis aus.
Zusätzliche Überlegung
Es lohnt sich zu überlegen, ob die Startzeit des Feldes DATETIME in ein DATUM geändert werden kann Feld. Dadurch würde die Notwendigkeit einer wiederholten Konvertierung entfallen, was möglicherweise die Leistung verbessern würde.
Das obige ist der detaillierte Inhalt vonWie erreicht man genaue Datumsvergleiche mit DATE_FORMAT() in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!