Il tuo formato fondamentalmente non è ordinabile per cominciare:stai confrontando stringhe e la stringa "28-10-2012" è maggiore di "02-11-2012".
Dovresti invece confrontare le date come date , quindi solo convertendoli nel formato di destinazione per l'output.
Prova questo:
select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';
(L'input deve sempre essere in formato anno-mese-valore, come da la documentazione .)
Nota che se starttime
è un DATETIME
campo, potresti prendere in considerazione la modifica della query per evitare conversioni ripetute. (L'ottimizzatore potrebbe essere abbastanza intelligente da evitarlo, ma vale la pena controllare.)
select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';
(Nota che è insolito formattare una data come d-m-Y
per cominciare - sarebbe meglio usare y-M-d
in generale, essendo lo standard ISO-8601 ecc. Tuttavia, il codice sopra fa ciò che hai chiesto nella domanda.)