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

Ngày tháng cho khoảng thời gian giữa (thay vì Ngày chuyển đổi)

Ví dụ, bạn có thể sử dụng cái này

DECLARE 
    @min FLOAT = CAST(CAST('19000101 12:20' AS DATETIME) AS FLOAT),
    @max FLOAT = CAST(CAST('19000101 15:50' AS DATETIME) AS FLOAT)

SELECT 
    *
FROM table
WHERE CAST(DateField AS FLOAT) - FLOOR(CAST(DATEFIELD AS FLOAT)) BETWEEN @min AND @max

Nhưng đây thực sự không phải là một giải pháp !!!

Cách tốt nhất là giới thiệu thêm 1 cột được tính là

NewColumn AS DATEPART(HOUR, DateColumn)*100+DATEPART(minute, DateColumn)  

Tạo chỉ mục trên đó và sử dụng trong mệnh đề where

WHERE NewColumn BETWEEN 1220 AND 1550


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tổng quan về các kiểu Nối SQL với các ví dụ

  2. Khám phá các thao tác lập chỉ mục trực tuyến cấp độ phân vùng trong SQL Server 2014 CTP1

  3. Phương pháp hay nhất là chèn SQL Server nếu không tồn tại

  4. Thành thạo việc sử dụng danh sách dừng với tìm kiếm toàn văn bản trên SQL Server (FTS)

  5. TSQL - tạo một proc được lưu trữ bên trong một báo cáo giao dịch