Nøglen er at bruge DATEADD og DATEDIFF sammen med den passende SQL-tidsopregning.
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
Bemærk, at når du gulvbelægger med sekundet, vil du ofte få et aritmetisk overløb, hvis du bruger 0. Så vælg en kendt værdi, der med garanti er lavere end det tidspunkt, hvor du forsøger at gulve.