„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie erreicht man genaue Datumsvergleiche mit DATE_FORMAT() in MySQL?

Wie erreicht man genaue Datumsvergleiche mit DATE_FORMAT() in MySQL?

Veröffentlicht am 03.11.2024
Durchsuche:754

How to Achieve Accurate Date Comparisons with 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 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.

Freigabeerklärung Dieser Artikel wird reproduziert unter: 1729738847 Wenn ein Verstoß vorliegt, wenden Sie sich bitte an [email protected], um ihn zu löschen.
Neuestes Tutorial Mehr>

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