sql >> Base de Datos >  >> RDS >> Sqlserver

Ordenar por fecha descendente - mes, día y año

Supongo que EventDate es un char o varchar y no una fecha; de lo contrario, su orden por cláusula estaría bien.

Puede usar CONVERTIR para cambiar los valores a una fecha y ordenar por eso

SELECT * 
FROM 
     vw_view 
ORDER BY 
   CONVERT(DateTime, EventDate,101)  DESC

El problema con eso es que, como señala Sparky en los comentarios, si EventDate tiene un valor que no se puede convertir a una fecha, la consulta no se ejecutará.

Esto significa que debe excluir las filas incorrectas o dejar que las filas incorrectas vayan al final de los resultados

Para excluir las filas incorrectas simplemente agregue WHERE IsDate(EventDate) = 1

Para dejar que las fechas incorrectas vayan al final, debe usar CASE

por ejemplo

ORDER BY 
    CASE
       WHEN IsDate(EventDate) = 1 THEN CONVERT(DateTime, EventDate,101)
       ELSE null
    END DESC