Mysql
 sql >> Database >  >> RDS >> Mysql

Confronto data mysql con date_format

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.)