sql >> Databasteknik >  >> RDS >> Sqlserver

Ordna efter fallande datum - månad, dag och år

Jag gissar på EventDate är en röding eller varchar och inte ett datum annars skulle din order by klausul vara bra.

Du kan använda CONVERT för att ändra värdena till ett datum och sortera efter det

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

Problemet med det är, som Sparky påpekar i kommentarerna, om EventDate har ett värde som inte kan konverteras till ett datum kommer frågan inte att köras.

Det betyder att du antingen bör utesluta de dåliga raderna eller låta de dåliga raderna hamna längst ner i resultaten

För att utesluta de dåliga raderna lägg bara till WHERE IsDate(EventDate) = 1

För att låta de dåliga datumen gå till botten måste du använda CASE

t.ex.

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


  1. Hjälp med att greppa (INRE?) GÅ MED

  2. Värdpaket på Chocolatey

  3. Få maskinskrivna resultat från ActiveRecord rå SQL

  4. Är anslutningspooling ett måste i ODP.NET?