Chỉ cần thực hiện DATEADD
có vấn đề trong hai bước, bắt đầu với đơn vị thời gian thô hơn (giây, phút, giờ, v.v.), sau đó quay trở lại đơn vị thời gian nhỏ cho phần còn lại.
Tuy nhiên, hãy tránh đi đến cấp độ tuần và tháng vì điều đó sẽ yêu cầu tính toán lịch thực tế và chúng tôi muốn hệ thống xử lý điều đó.
Ví dụ bên dưới cần tính toán thời gian bắt đầu cho trước thời lượng dòng điện lớn (có thể) tính bằng mili giây.
-- large durations can overflow the integer argument needed for DATEADD
-- so do as two steps subtracting minutes (60000ms) and then remaining milliseconds.
DATEADD(ms, -large_duration_ms%60000, DATEADD(minute, -large_duration_ms/60000, GETDATE()))