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

T-SQL:Làm tròn đến khoảng thời gian 15 phút gần nhất

Tôi hiện đang sử dụng biến thể dateadd / dateiff với ngày tháng không (0) cho việc này. Không cần truyền:

select dateadd(minute, datediff(minute,0,GETDATE()) / 15 * 15, 0)

GETDATE () là bất kể ngày giờ của bạn.

Điều này sẽ hoạt động cho các ngày ít nhất là đến năm 5500 trước khi ghi ngày bị lỗi do tràn. Tuy nhiên nếu bạn cố gắng sử dụng độ chính xác thứ hai, ở trên sẽ thất bại ngay lập tức.

Sử dụng một ngày cố định khác, như '2009-01-01' hoặc Ngày hôm nay (cảnh báo, SQL xấu hơn) sẽ khắc phục điều đó. Một ngày trong tương lai cũng sẽ hiệu quả. Miễn là nó có một phần thời gian là 00:00:00, bạn có thể căn cứ vào một ngày giờ khác.

ví dụ:làm tròn đến 30 giây gần nhất:

select dateadd(second, round(datediff(second, '2010-01-01', GETDATE()) / 30.0, 0) * 30, '2010-01-01');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL chọn nơi không có trong truy vấn con không trả về kết quả

  2. Cách hàm CHAR () hoạt động trong SQL Server (T-SQL)

  3. Làm cách nào để lấy phần số từ một chuỗi bằng T-SQL?

  4. Sử dụng DMV (Chế độ xem quản lý động) và DMF (Chức năng quản lý động) | Khắc phục sự cố hiệu suất máy chủ SQL -4

  5. T-SQL Làm thế nào để tạo bảng động trong các thủ tục được lưu trữ?