Formato de fecha MySQL DD / MM / AAAA seleccionar consulta?

139

Estoy un poco confundido sobre cómo ordenar por formatos de fecha.

Para el formato YYYY-MM-DD, haría esto:...ORDER BY date DESC...

¿Cómo ordenarías DD/MM/YYYY?

Esto no está funcionando:

SELECT * FROM $table ORDER BY DATE_FORMAT(Date, '%Y%m%d') DESC LIMIT 14
K - La toxicidad en SO está creciendo.
fuente

Respuestas:

152

Puede usar STR_TO_DATE()para convertir sus cadenas a valores de fecha MySQL y ORDER BYel resultado:

ORDER BY STR_TO_DATE(datestring, '%d/%m/%Y')

Sin embargo, sería aconsejable convertir la columna al DATEtipo de datos en lugar de usar cadenas.

eggyal
fuente
188

¿Adivina que probablemente solo quieras formatear la fecha de salida? entonces esto es lo que buscas

SELECT *, DATE_FORMAT(date,'%d/%m/%Y') AS niceDate 
FROM table 
ORDER BY date DESC 
LIMIT 0,14

¿O realmente quieres ordenar por día antes de mes antes de año?

trampero
fuente
1
Sin embargo, me gustaría tener las 14 últimas fechas / registros :) ¡El formato en la base de datos es "DD / MM / AAAA"!
K - La toxicidad en SO está creciendo.
¿Es la fecha en la base de datos un tipo de fecha real, o es un tipo de cadena?
cazador
2
mysql> DESCRIBE Table;y pegue la salida
trapper
DATE_FORMAT (fecha, '% a') dará una abreviatura del día de la semana. Utilicé esto para hacer algunos boxplots y tal en RStudio.
user208145
39
SELECT DATE_FORMAT(somedate, "%d/%m/%Y") AS formatted_date
..........
ORDER BY formatted_date DESC
John Conde
fuente
3
¿Soy solo yo o %lno funciona? Da 12por cada mes y tuve que cambiarme %m.
Beroe
1
% l es para horas dev.mysql.com/doc/refman/5.5/en/... @beroe
10
SELECT DATE_FORMAT(COLUMN_NAME, "%d/%m/%Y %h:%i %p");

O

SELECT DATE_FORMAT("2019-05-10 19:30:10", "%d/%m/%Y %h:%i %p");

SALIDA es 10/05/2019 07:30 PM

Mani
fuente
4

para mi caso esto funcionó

str_to_date(date, '%e/%m/%Y' )
Kishore Sahoo
fuente
4

Si la hora es importante, utilicé str_to_date(date, '%d/%m/%Y %T' ), %Tmuestra la hora en el formato hh:mm:ss.

Davi RIbeiro
fuente
No se conoce como hora. %Tmuestra el valor con formato de hora. Por cierto, obtuviste mi voto positivo.
Wolverine
3

ORDER BY un tipo de fecha no depende del formato de fecha, el formato de fecha es solo para mostrar, en la base de datos, que son los mismos datos.

xdazz
fuente
El formato se puede usar para ordenar (si alguien realmente quiere, me parece extraño), pero dicho orden no puede basarse en el índice, por lo que [b] es costoso [/ b], solo se puede ejecutar la clasificación sobre columnas bien diseñadas con index ( rápido) y optimizado por el servidor
Jacek Cz