Lakukan saja DATEADD
yang bermasalah dalam dua langkah, dimulai dengan satuan waktu yang lebih kasar (detik, menit, jam, dll.), kemudian turun kembali ke satuan waktu yang lebih halus untuk sisanya.
Hindari pergi ke level minggu dan bulan karena itu akan membutuhkan perhitungan kalender yang sebenarnya dan kami lebih suka sistem untuk menanganinya.
Contoh di bawah ini perlu menghitung waktu mulai dengan (mungkin) durasi arus yang besar dalam milidetik.
-- 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()))