Vergleich von MySQL-Daten mit date_format
Obwohl ein Benutzer mehrere Datumsvergleichsmethoden ausprobiert hat, ist ein unerwartetes Ergebnis aufgetreten. Sie wollten Datumsangaben im Format „%d-%m-%Y“ vergleichen, enthielten jedoch einen fehlerhaften Datensatz im Ergebnissatz.
Das Problem entsteht durch den Vergleich von Zeichenfolgen anstelle von Datumsangaben. Die Funktion date_format wandelt Datumsangaben in Zeichenfolgen um, wodurch der Vergleich für die lexikografische Reihenfolge geeignet ist. Beispielsweise ist „28-10-2012“ alphabetisch größer als „02-11-2012“ und wird daher in die Ergebnismenge aufgenommen, obwohl es chronologisch früher liegt.
Um dieses Problem zu beheben, sollte der Vergleich durchgeführt werden Datumsangaben anstelle von Zeichenfolgen. Mit der Datumsfunktion kann die Datumskomponente aus einem DATETIME- oder DATE-Feld extrahiert werden. Durch den Vergleich der extrahierten Daten wird die chronologische Reihenfolge sichergestellt.
Zum Beispiel:
select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';
In dieser Abfrage extrahiert date(starttime) das Datum aus dem Startzeitfeld, das dann mit dem angegebenen Datum in JJJJ-MM verglichen wird -DD-Format. Die date_format-Funktion wird nur zum Formatieren des Ergebnisses verwendet.
Wenn starttime ein DATETIME-Feld ist, sollten Sie Folgendes verwenden:
select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';
Diese Abfrage vermeidet eine wiederholte Datumsumwandlung, da der Vergleich direkt im Feld DATETIME durchgeführt wird.
Denken Sie an die ISO -8601-Standard empfiehlt die Verwendung von „JJJJ-MM-TT“ als Datumsformat, der bereitgestellte Code entspricht jedoch dem vom Benutzer angegebenen Format „%d-%m-%Y“.
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