sql >> Databáze >  >> RDS >> Sqlserver

Seřaďte sestupně podle data - měsíc, den a rok

Hádám EventDate je char nebo varchar a ne datum, jinak by vaše objednávka podle klauzule byla v pořádku.

Pomocí CONVERT můžete změnit hodnoty na datum a seřadit podle toho

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

Problém s tím je, jak Sparky zdůrazňuje v komentářích, pokud EventDate má hodnotu, kterou nelze převést na datum, kdy se dotaz nespustí.

To znamená, že byste měli buď vyloučit špatné řádky, nebo nechat špatné řádky přejít na konec výsledků

Chcete-li vyloučit špatné řádky, stačí přidat WHERE IsDate(EventDate) = 1

Chcete-li nechat špatná data jít dolů, musíte použít CASE

např.

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


  1. PHP a MySQL včetně tlačítka Delete na stejné stránce

  2. Databáze receptů, vyhledávání podle přísad

  3. Jak přeskočit s dalšími dalšími záznamy při dosažení stavu?

  4. Rozdíl mezi NULL a prázdnou hodnotou v Mysql