sql >> Base de Datos >  >> RDS >> Mysql

comparación de fecha mysql con date_format

Para empezar, su formato no es fundamentalmente clasificable:está comparando cadenas y la cadena "28-10-2012" es mayor que "02-11-2012".

En su lugar, debería comparar fechas como fechas , y luego solo convertirlos a su formato de destino para la salida.

Prueba esto:

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

(La entrada siempre debe estar en forma de valor de año-mes, según la documentación .)

Tenga en cuenta que si starttime es un DATETIME campo, es posible que desee considerar cambiar la consulta para evitar la conversión repetida. (El optimizador puede ser lo suficientemente inteligente como para evitarlo, pero vale la pena comprobarlo).

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

(Tenga en cuenta que es inusual formatear una fecha como d-m-Y para empezar, sería mejor usar y-M-d en general, siendo el estándar ISO-8601, etc. Sin embargo, el código anterior hace lo que solicitó en la pregunta).