Adakah Operator "Antara" MS SQL Server Termasuk Sempadan Julat?
Pengendali BETWEEN dalam MS SQL Server, seperti namanya, menyemak sama ada ungkapan yang diberikan berada dalam julat yang ditentukan. Walau bagaimanapun, persoalan biasa timbul: adakah julat ini termasuk atau mengecualikan nilai sempadan?
Jawapannya ialah BETWEEN ialah pengendali inklusif, bermakna ia merangkumi kedua-dua sempadan bawah dan atas julat. Untuk menjelaskan:
SELECT foo FROM bar WHERE foo BETWEEN 5 AND 10
Pertanyaan ini akan mendapatkan semula baris dengan foo ialah >= 5 dan <= 10, dengan berkesan termasuk nilai 5 dan 10 dalam hasilnya. Ini disahkan oleh dokumentasi Microsoft:
ANTARA mengembalikan BENAR jika nilai test_expression lebih besar daripada atau sama dengan nilai begin_expression dan kurang daripada atau sama dengan nilai end_expression.
DateTime Caveats
Untuk nilai DateTime, terdapat pertimbangan yang halus untuk diingati. Jika hanya tarikh ditetapkan, ia ditafsirkan sebagai tengah malam pada hari tersebut. Untuk mengelakkan kehilangan atau penduaan nilai masa, adalah disyorkan untuk menggunakan julat yang tidak termasuk 3 milisaat sebelum tengah malam pada tarikh tamat.
Sebagai contoh, untuk mendapatkan semua nilai DateTime dalam bulan Jun 2016:
WHERE myDateTime BETWEEN '20160601' AND DATEADD(millisecond, -3, '20160701')
Ini memastikan bahawa julat memanjang hingga akhir bulan tanpa memasukkan sebarang nilai dari bulan Julai Pertama.
datetime2 and datetimeoffset
Untuk jenis data ini, adalah lebih selamat untuk menggunakan >= dan < pengendali bukannya ANTARA. Contohnya:
WHERE myDateTime >= '20160601' AND myDateTime < '20160701'Atas ialah kandungan terperinci Adakah Operator `BETWEEN` SQL Server Termasuk Nilai Mula dan Tamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!