Kuncinya adalah menggunakan DATEADD dan DATEDIFF bersama dengan pencacahan rentang waktu SQL yang sesuai.
declare @datetime datetime;
set @datetime = getdate();
select @datetime;
select dateadd(year,datediff(year,0,@datetime),0);
select dateadd(month,datediff(month,0,@datetime),0);
select dateadd(day,datediff(day,0,@datetime),0);
select dateadd(hour,datediff(hour,0,@datetime),0);
select dateadd(minute,datediff(minute,0,@datetime),0);
select dateadd(second,datediff(second,'2000-01-01',@datetime),'2000-01-01');
select dateadd(week,datediff(week,0,@datetime),-1); --Beginning of week is Sunday
select dateadd(week,datediff(week,0,@datetime),0); --Beginning of week is Monday
Perhatikan bahwa saat Anda melakukan floor per detik, Anda akan sering mendapatkan limpahan aritmatika jika menggunakan 0. Jadi, pilih nilai yang diketahui yang dijamin lebih rendah dari waktu saat Anda mencoba melakukan floor.