MySQL-Datumsvergleich mit DATE_FORMAT()
In diesem Artikel erfahren Sie, wie Sie Datumsvergleiche in MySQL mit DATE_FORMAT() durchführen. Funktion, die ein bestimmtes 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 hat der Benutzer versucht, die Daten zu vergleichen:
SELECT DATE_FORMAT(DATE(starttime), '%d-%m-%Y')
FROM data
WHERE DATE_FORMAT(DATE(starttime), '%d-%m-%Y') >= '02-11-2012';
Das Ergebnis enthielt jedoch „28-10-2012“, was war gemäß den Erwartungen des Benutzers falsch.
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:
SELECT DATE_FORMAT(DATE(starttime), '%d-%m-%Y')
FROM data
WHERE DATE(starttime) >= DATE('2012-11-02');
Diese Abfrage vergleicht die Daten korrekt und schließt „28-10-2012“ aus dem Ergebnis aus.
Zusätzliche Überlegungen
Es lohnt sich zu überlegen, ob die Startzeit des DATETIME-Felds in ein DATE-Feld geändert werden kann. Dies würde die Notwendigkeit einer wiederholten Konvertierung beseitigen und möglicherweise die Leistung verbessern.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3