Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membandingkan Nilai Datetime dengan Hanya Tarikh dalam SQL Server?

Bagaimana untuk Membandingkan Nilai Datetime dengan Hanya Tarikh dalam SQL Server?

DDD
DDDasal
2025-01-05 19:52:45177semak imbas

How to Correctly Compare Datetime Values with Only Dates in 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:

  • Mereka boleh menghalang pengoptimuman indeks, membuat pertanyaan lebih perlahan.
  • Mereka memperkenalkan pengiraan yang tidak perlu untuk setiap baris, yang berpotensi merendahkan prestasi.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn