Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Apakah MS SQL Server antara menyertakan batas jangkauan?

Operator ANTARA bersifat inklusif.

Dari Buku Daring:

BETWEEN mengembalikan TRUE jika nilai ekspresi_tes lebih besar dari orequal dengan nilai ekspresi_mulai dan kurang dari atau sama dengan nilai ekspresi_akhir.

Peringatan DateTime

NB:Dengan DateTimes Anda harus berhati-hati; jika hanya tanggal yang diberikan, nilainya diambil pada tengah malam pada hari itu; untuk menghindari waktu yang hilang dalam tanggal akhir Anda, atau pengulangan pengambilan data hari berikutnya pada tengah malam dalam beberapa rentang, tanggal akhir Anda harus 3 milidetik sebelum tengah malam pada hari setelah tanggal Anda. 3 milidetik karena kurang dari ini dan nilainya akan dibulatkan hingga tengah malam pada hari berikutnya.

misalnya untuk mendapatkan semua nilai dalam Juni 2016 Anda harus menjalankan:

where myDateTime between '20160601' and DATEADD(millisecond, -3, '20160701')

yaitu

where myDateTime between '20160601 00:00:00.000' and '20160630 23:59:59.997'

datetime2 dan datetimeoffset

Mengurangi 3 md dari tanggal akan membuat Anda rentan terhadap baris yang hilang dari jendela 3 md. Solusi yang benar juga yang paling sederhana:

where myDateTime >= '20160601' AND myDateTime < '20160701'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan fungsi COALESCE untuk membuat nilai dipisahkan dengan koma

  2. Berapa kali karakter tertentu muncul dalam string

  3. Konversi tipe data datetime2 ke tipe data datetime menghasilkan nilai di luar rentang

  4. Cara membuat cadangan atau membuat tabel baru dari Tabel SQL Server yang Ada di SQL Server - Tutorial SQL Server / TSQL Bagian 105

  5. SQL Server dan Kerentanan Spectre/Meltdown