sql >> Database teknologi >  >> RDS >> Sqlserver

Bestil efter faldende dato - måned, dag og år

Jeg gætter på EventDate er en char eller varchar og ikke en dato ellers ville din ordre efter klausul være i orden.

Du kan bruge CONVERT til at ændre værdierne til en dato og sortere efter den

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

Problemet med det er, som Sparky påpeger i kommentarerne, hvis EventDate har en værdi, der ikke kan konverteres til en dato, vil forespørgslen ikke udføres.

Det betyder, at du enten skal ekskludere de dårlige rækker eller lade de dårlige rækker gå til bunden af ​​resultaterne

For at udelukke de dårlige rækker skal du blot tilføje WHERE IsDate(EventDate) = 1

For at lade de dårlige datoer gå til bunds skal du bruge CASE

f.eks.

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


  1. Er det muligt at uploade en fil i mysql-databasetabel med JMeter?

  2. Tilføj tredjeparts dll-reference i ssis-scriptkomponent

  3. Send en række tags til en plpgsql-funktion og brug den i WHERE-tilstand

  4. Returner dag, måned og år i MySQL