Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Giữa MS SQL Server có bao gồm các ranh giới phạm vi không?

Toán tử BETWEEN được bao gồm.

Từ Sách Trực tuyến:

GIỮA trả về TRUE nếu giá trị củatest_expression lớn hơn giá trị của begin_expressionaiona và nhỏ hơn hoặc bằng giá trị củaend_expression.

Báo trước DateTime

NB:Với DateTimes, bạn phải cẩn thận; nếu chỉ đưa ra một ngày thì giá trị được tính là nửa đêm của ngày đó; để tránh bỏ lỡ thời gian trong ngày kết thúc của bạn hoặc lặp lại việc thu thập dữ liệu của ngày hôm sau vào lúc nửa đêm trong nhiều phạm vi, ngày kết thúc của bạn phải là 3 mili giây trước nửa đêm của ngày sau ngày của bạn. 3 mili giây vì bất kỳ nhỏ hơn giá trị này và giá trị sẽ được làm tròn đến nửa đêm ngày hôm sau.

ví dụ. để nhận được tất cả các giá trị trong tháng 6 năm 2016, bạn cần chạy:

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

tức là

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

datetime2 và datetimeoffset

Trừ 3 mili giây cho một ngày sẽ khiến bạn dễ bị thiếu hàng trong cửa sổ 3 mili giây. Giải pháp đúng cũng là giải pháp đơn giản nhất:

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. Lỗi SSMS 2016 khi nhập bacpac Azure SQL v12:không hỗ trợ khóa chính không có mật khẩu

  2. Cách loại trừ các bản ghi có giá trị nhất định trong sql select

  3. Truy vấn liệt kê số lượng bản ghi trong mỗi bảng trong cơ sở dữ liệu

  4. Sự khác biệt giữa CHAR và VARCHAR trong SQL Server là gì - Hướng dẫn sử dụng SQL Server / T-SQL Phần 31

  5. Thủ tục hoặc hàm được lưu trữ yêu cầu tham số không được cung cấp