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

MySQL-Datumsvergleich mit date_format

Ihr Format ist grundsätzlich nicht sortierbar - Sie vergleichen Strings , und die Zeichenfolge "28-10-2012" ist größer als "02-11-2012".

Stattdessen sollten Sie Daten als Daten vergleichen , um sie dann nur noch in Ihr Zielformat für die Ausgabe umzuwandeln.

Versuchen Sie Folgendes:

select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';

(Die Eingabe muss immer im Jahr-Monat-Wert-Format erfolgen, gemäß die Dokumentation .)

Beachten Sie, dass wenn starttime ist ein DATETIME Feld, möchten Sie möglicherweise die Abfrage ändern, um eine wiederholte Konvertierung zu vermeiden. (Der Optimierer ist möglicherweise schlau genug, dies zu vermeiden, aber es lohnt sich, ihn zu überprüfen.)

select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';

(Beachten Sie, dass es ungewöhnlich ist, ein Datum als d-m-Y zu formatieren zu Beginn - es wäre besser, y-M-d zu verwenden im Allgemeinen der ISO-8601-Standard usw. Der obige Code tut jedoch das, wonach Sie in der Frage gefragt haben.)