Dit format er grundlæggende ikke sorterbart til at starte med - du sammenligner strenge , og strengen "28-10-2012" er større end "02-11-2012".
I stedet bør du sammenligne datoer som datoer , og derefter kun konvertere dem til dit målformat til output.
Prøv dette:
select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';
(Input skal altid være i år-måned-værdi-form, som pr. dokumentationen .)
Bemærk, at hvis starttime
er en DATETIME
kan du overveje at ændre forespørgslen for at undgå gentagen konvertering. (Optimeringsværktøjet kan godt være smart nok til at undgå det, men det er værd at tjekke.)
select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';
(Bemærk, at det er usædvanligt at formatere en dato som d-m-Y
til at starte med - det ville være bedre at bruge y-M-d
generelt, da det er ISO-8601-standarden osv. Ovenstående kode gør dog, hvad du bad om i spørgsmålet.)