sql >> Databasteknik >  >> RDS >> Mysql

mysql datumjämförelse med date_format

Ditt format är i grunden inte sorterbart till att börja med - du jämför strängar , och strängen "28-10-2012" är större än "02-11-2012".

Istället bör du jämföra datum som datum , och sedan bara konvertera dem till ditt målformat för utdata.

Prova detta:

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

(Indata måste alltid vara i form av år-månad-värde, enligt dokumentationen .)

Observera att om starttime är en DATETIME kan du överväga att ändra frågan för att undvika upprepad konvertering. (Optimeraren kan mycket väl vara smart nog att undvika det, men det är värt att kolla.)

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

(Observera att det är ovanligt att formatera ett datum som d-m-Y till att börja med - det skulle vara bättre att använda y-M-d i allmänhet, eftersom det är ISO-8601-standarden etc. Ovanstående kod gör dock vad du bad om i frågan.)



  1. ORD() Exempel – MySQL

  2. bbPress:Hur man hittar mappningar av bilagor till deras respektive inlägg

  3. Konvertera tidsstämpel datatyp till unix tidsstämpel Oracle

  4. NodeJS mySQL Insert Blob