SELECT DATEADD(WW,DATEDIFF(WW,0,getdate()),0)--this MondaySELECT DATEADD(DD,-1,DATEADD(WW,DATEDIFF(WW,0,getdate())+1,0))--this weekendSELECT DATEADD(MM,DATEDIFF(MM,0,getdate()),0)--Early this monthSELECT DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,0,getdate())+1,0))--Month EndSELECT DATEADD(MM,DATEDIFF(MM,0,getdate())- 1,0)--Early last monthSELECT DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,0,getdate()),0))--last monthSELECT DATEADD(YY,DATEDIFF(YY,0,getdate()),0)--early this yearSELECT DATEADD(DD,-1,DATEADD(YY,DATEDIFF(YY,0,getdate())+ 1,0))--End of yearSELECT DATEADD(YY,DATEDIFF(YY,0,getdate())- 1,0)--early last yearSELECT DATEADD(DD,-1,DATEADD(YY,DATEDIFF(YY,0,getdate()),0))--end of last year
The idea is to use the DateDiff function to get the corresponding difference between the specified date and the 1900-01-01 00:00:00 to calculate the target date.
SQL gets the week, month, and year end time.