Pendapatan Julat Inklusif dengan Pengendali "ANTARA" MS SQL Server
Apabila menggunakan pengendali "ANTARA" MS SQL Server, adalah penting untuk memahami sama ada sempadan julat disertakan atau dikecualikan dalam kriteria pemilihan.
Untuk menjawab soalan khusus, pengendali "ANTARA" adalah inklusif. Ini bermakna, secara lalai, nilai yang ditentukan sebagai sempadan bawah dan atas disertakan dalam set hasil. Dalam contoh yang disediakan:
SELECT foo FROM bar WHERE foo BETWEEN 5 AND 10
Pertanyaan akan memilih semua baris dengan nilai lajur "foo" adalah antara (dan termasuk) 5 dan 10.
Walau bagaimanapun, tingkah laku inklusif ini boleh mengemukakan kaveat apabila bekerja dengan DateTimes. Secara lalai, apabila hanya tarikh ditentukan, SQL Server menganggapnya sebagai tengah malam pada hari itu. Ini bermakna jika anda ingin menangkap semua nilai dalam hari tertentu, anda mesti menolak 3 milisaat daripada tarikh tamat untuk mengelakkan kehilangan data dalam masa 3 milisaat sebelum tengah malam.
Contohnya, untuk mendapatkan semula semua nilai dalam Jun 2016, pertanyaan yang betul ialah:
where myDateTime between '20160601' and DATEADD(millisecond, -3, '20160701')
Ini memastikan anda menangkap semua nilai dalam bulan Jun 2016, termasuk yang berada dalam 3 milisaat sebelum tengah malam pada 30 Jun.
Adalah penting untuk ambil perhatian bahawa, manakala bagi kebanyakan jenis data pengendali "ANTARA" adalah inklusif, terdapat pengecualian. Sebagai contoh, dengan jenis data "datetime2" dan "datetimeoffset", biasanya disyorkan untuk menggunakan ">=" dan "<" pengendali dan bukannya "ANTARA" untuk mengelakkan masalah pemangkasan julat yang berpotensi.
Atas ialah kandungan terperinci Adakah Operator `ANTARA` MS SQL Server Termasuk atau Eksklusif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!