Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memadankan Pertanyaan Tarikh Sahaja dengan Medan DateTime dalam SQL Server dengan betul?

Bagaimana untuk Memadankan Pertanyaan Tarikh Sahaja dengan Medan DateTime dalam SQL Server dengan betul?

Mary-Kate Olsen
Lepaskan: 2025-01-04 12:17:35
asal
532 orang telah melayarinya

How to Correctly Match Date-Only Queries with DateTime Fields in SQL Server?

Memadankan Pertanyaan Tarikh sahaja dengan Medan Datetime dalam SQL Server

Apabila menanya medan datetime dalam SQL Server menggunakan nilai tarikh sahaja, ia adalah penting untuk memahami implikasi untuk memastikan hasil yang tepat.

Dalam yang disediakan contoh:

Select * from [User] U
where  U.DateCreated = '2014-02-07'
Salin selepas log masuk

Jika pengguna dicipta pada '2014-02-07 12:30:47.220,' pertanyaan tidak akan mengembalikan hasil kerana ia hanya membandingkan nilai exactdatetime.

Pendekatan Disyorkan

Untuk menyelesaikan isu ini dan memadankan dengan tepat nilai tarikh sahaja dengan medan datetime, adalah disyorkan untuk menggunakan pendekatan berikut:

Select * from [User] U 
where U.DateCreated >= '2014-02-07' and U.DateCreated < dateadd(day,1,'2014-02-07')
Salin selepas log masuk

Pertanyaan ini menentukan julat yang merangkumi semua rekod dengan nilai datetime '2014-02-07' atau lebih baru tetapi sebelum '2014-02-08.'

Kepentingan Predikat SaRGable dan Mengelak Fungsi

Adalah penting untuk mengelak daripada menggunakan fungsi seperti convert() dalam klausa where apabila membandingkan nilai datetime dengan kriteria tarikh sahaja. Ini boleh menghalang penggunaan indeks, memperlahankan pertanyaan dan memperkenalkan pengiraan yang tidak perlu. Sebaliknya, mengubah suai pertanyaan agar sesuai dengan data (juga dikenali sebagai menggunakan predikat SARGable) meningkatkan prestasi pertanyaan.

Amalan Terbaik untuk Pertanyaan Julat Tarikh

Selain itu, dinasihatkan untuk elakkan menggunakan operator BETWEEN apabila menanyakan julat tarikh. Sebaliknya, gunakan borang berikut untuk hasil yang optimum:

WHERE col >= '20120101' AND col < '20120201'
Salin selepas log masuk

Pendekatan ini memastikan keserasian dengan semua jenis data dan ketepatan serta menghapuskan isu yang berpotensi dengan komponen masa nilai datetime.

Atas ialah kandungan terperinci Bagaimana untuk Memadankan Pertanyaan Tarikh Sahaja dengan Medan DateTime dalam SQL Server dengan betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan