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

Bandingkan tanggal dalam T-SQL, abaikan bagian waktu

Cara paling masuk akal untuk melakukannya adalah dengan menghapus bagian waktu dari nilai datetime dan membandingkan hasilnya, dan cara terbaik untuk menghapus bagian waktu dari sebuah datetime adalah seperti ini:

cast(current_timestamp as date)    

Saya dulu menggunakan dan menganjurkan proses yang tampak seperti salah satu dari dua baris berikut:

cast(floor(cast(getdate() as float)) as datetime)
dateadd(dd,0, datediff(dd,0, getDate()))

Tapi sekarang Sql Server memiliki Date jenis, yang tidak memiliki komponen waktu, ada sedikit alasan untuk menggunakan salah satu dari teknik tersebut.

Satu hal lagi yang perlu diingat adalah ini masih akan menghambat kueri jika Anda perlu melakukannya untuk dua nilai datetime untuk setiap baris dalam klausa where atau kondisi join. Jika memungkinkan, Anda ingin memfaktorkan hal ini entah bagaimana jadi itu sudah dihitung sebelumnya sebanyak mungkin, misalnya menggunakan tampilan atau kolom yang dihitung.

Terakhir, perhatikan fungsi DATEDIFF membandingkan jumlah batas yang dilintasi. Ini berarti tanggal dalam hari antara '2009-09-14 11:59:59' dan '2009-09-15 00:00:01' adalah 1, meskipun hanya 2 detik telah berlalu, tetapi DATEDIFF dalam hari antara '2009-09-15 00:00:01' dan '2009-09-15 11:59:59' masih nol, meskipun 86.398 detik telah berlalu. Itu tidak terlalu peduli sama sekali tentang porsi waktu di sana, hanya batas-batasnya. Bergantung pada apa yang coba dilakukan kueri Anda, Anda mungkin dapat menggunakannya untuk keuntungan Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara membuat daftar semua tabel di semua database di SQL Server dalam satu set hasil?

  2. Pilih / Sisipkan versi Upsert:apakah ada pola desain untuk konkurensi tinggi?

  3. Dapatkan karakter antara 2 karakter khusus pertama dalam SQL

  4. Kelola File MDF di SQL Server 2019

  5. 3 Pertanyaan Pemantauan SQL Server untuk Ditanyakan Saat Mengambil alih Posisi DBA