Membandingkan Datetime dengan Date dalam SQL Server
Apabila membandingkan nilai datetime dengan tarikh sahaja, hasilnya mungkin tidak dijangka. Ini kerana jenis data datetime termasuk komponen tarikh dan masa. Sebagai contoh, jika anda mempunyai jadual pengguna dengan lajur DateCreated jenis datetime, pertanyaan berikut:
Select * from [User] U where U.DateCreated = '2014-02-07'
tidak akan mengembalikan sebarang rekod, walaupun pengguna telah dibuat pada 2014-02-07 pada 12 :30:47.220.
Untuk membandingkan dengan tepat masa tarikh dengan tarikh sahaja, gunakan yang berikut kaedah:
Select * from [User] U where U.DateCreated >= '2014-02-07' and U.DateCreated < dateadd(day,1,'2014-02-07')
Pertanyaan ini boleh SARGable, bermakna ia boleh menggunakan indeks pada lajur DateCreated.
Mengapa Tidak Gunakan Fungsi?
Ia mungkin menggoda untuk menggunakan fungsi seperti CONVERT untuk mengekstrak komponen tarikh daripada datetime. Walau bagaimanapun, ini tidak disyorkan. Menggunakan fungsi dalam klausa WHERE atau syarat gabungan:
Mengelakkan ANTARA
ANTARA juga harus dielakkan apabila berurusan dengan julat tarikh dan masa. Sebaliknya, gunakan borang berikut:
WHERE col >= '20120101' AND col < '20120201'
Borang ini serasi dengan semua jenis data dan ketepatan, tanpa mengira bahagian masa.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membandingkan Nilai DATETIME dan DATE dengan betul dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!