El formato SQL order by datetime en dd.MM.yyyy no es correcto.
Tengo problemas para ordenar mis datos en el orden correcto. He intentado diferentes combinaciones pero todas devuelven los datos de manera incorrecta. La columna de fecha está en formato datetime
. Algunos códigos que he intentado:
SELECT CONVERT(VARCHAR(10), recibidoFecha, 104) as día
FROM tabla
GROUP BY CONVERT(VARCHAR(10), recibidoFecha, 104)
ORDER BY CONVERT(VARCHAR(10), recibidoFecha, 104)
Devuelve los datos como:
01.02.2021
01.03.2021
01.04.2021
02.02.2021
02.03.2021
...
He intentado:
SELECT FORMAT(CONVERT(DATETIME, CONVERT(VARCHAR(10), recibidoFecha, 121)),'dd.MM.yyyy')
FROM tabla
GROUP BY FORMAT(CONVERT(DATETIME, CONVERT(VARCHAR(10), recibidoFecha, 121)),'dd.MM.yyyy')
ORDER BY FORMAT(CONVERT(DATETIME, CONVERT(VARCHAR(10), recibidoFecha, 121)),'dd.MM.yyyy')
Que devuelve los mismos resultados.
Pero lo que quiero es:
01.01.2021
02.01.2021
03.01.2021
01.02.2021
Y así sucesivamente. Realmente no sé por qué agrupa todos los meses y luego los ordena por día.
davy.ai
Parece que el problema podría estar en el tipo de dato de la columna
recievedDate
. Debido a que está en formatodatetime
, es posible que el ordenamiento no se esté realizando como se espera al utilizar la funciónCONVERT
.Una posible solución podría ser utilizar la función
DATEPART
para extraer el día, mes y año por separado, y luego concatenarlos en el orden deseado.Por ejemplo:
Esto debería darte los valores de fecha en el orden correcto, sin agruparlos por mes. La cláusula
ORDER BY
está utilizando la columna originalrecievedDate
para ordenar los resultados en orden ascendente.Además, puedes modificar el formato de la cadena concatenada para que se ajuste al formato de salida deseado. ¡Espero que esto te ayude!