Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membandingkan Nilai Datetime dengan Hanya Tarikh dalam SQL Server?
Membandingkan Nilai Datetime dengan Hanya Tarikh dalam SQL Server
Apabila menanyakan rekod pangkalan data dengan perbandingan dengan nilai datetime yang merangkumi hanya bahagian tarikh , adalah penting untuk memahami implikasi.
Isu
Pertimbangkan pertanyaan SQL berikut:
Select * from [User] U where U.DateCreated = '2014-02-07'
Jika pengguna dicipta pada '2014-02-07 12: 30:47.220', pertanyaan tidak akan mengembalikan sebarang data, kerana perbandingan dilakukan dengan ketat terhadap tarikh bahagian sahaja.
Penyelesaian
Untuk membandingkan dengan betul nilai datetime dengan tarikh sahaja, anda harus kurungkan dengan permulaan dan akhir hari:
Select * from [User] U where U.DateCreated >= '2014-02-07' and U.DateCreated < dateadd(day,1,'2014-02-07')
Pendekatan ini memastikan bahawa pertanyaan termasuk rekod yang dibuat pada tarikh yang ditentukan, tanpa mengira masa komponen.
Elakkan Menggunakan Fungsi dalam Klausa WHERE
Adalah penting untuk mengelak daripada menggunakan fungsi (seperti menukar) dalam klausa WHERE atau syarat bergabung atas beberapa sebab:
Jangan Bergantung pada ANTARA Sama ada
Secara amnya disyorkan untuk mengelak daripada menggunakan operator BETWEEN untuk perbandingan tarikh dan masa. Sebaliknya, gunakan borang:
WHERE col >= '20120101' AND col < '20120201'
Pendekatan ini berfungsi secara konsisten tanpa mengira jenis data atau ketepatan, dan ia juga mengelakkan kemungkinan perangkap dengan ANTARA.
Atas ialah kandungan terperinci Bagaimana untuk Membandingkan Nilai Datetime dengan Hanya Tarikh dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!