Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Pesan berdasarkan tanggal turun - bulan, hari, dan tahun

Saya menebak EventDate adalah char atau varchar dan bukan tanggal jika tidak, pesanan Anda dengan klausa akan baik-baik saja.

Anda dapat menggunakan CONVERT untuk mengubah nilai menjadi tanggal dan mengurutkannya

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

Masalahnya adalah, seperti yang ditunjukkan Sparky dalam komentar, jika EventDate memiliki nilai yang tidak dapat dikonversi ke tanggal kueri tidak akan dijalankan.

Ini berarti Anda harus mengecualikan baris yang buruk atau membiarkan baris yang buruk berada di bagian bawah hasil

Untuk mengecualikan baris yang buruk cukup tambahkan WHERE IsDate(EventDate) = 1

Untuk membiarkan tanggal buruk turun ke bawah, Anda perlu menggunakan CASE

misalnya

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menangkap beberapa pesan kesalahan dari satu pernyataan di dalam TRY CATCH

  2. Menghubungkan ke MS SQL Server dengan Otentikasi Windows menggunakan Python?

  3. Cara Menghentikan/Memulai Antrian Surat Database di SQL Server (T-SQL)

  4. Memahami Ukuran Penyimpanan 'datetime2' di SQL Server

  5. SQL Server ROWLOCK melalui SELECT jika tidak ada transaksi INSERT