declare @sDate datetime = '2019-01-01'
,@eDate datetime= '2019-12-31'
select d2.weekRange,d2.FirstDay,d2.EndDay from
(
select datepart(WEEK,d.dates) weekRange
,dateadd(Day,1-(DATEPART(Weekday,d.dates)+@@DATEFIRST-1)%7,d.dates) FirstDay
,dateadd(wk, datediff(wk,0,d.dates), 6) EndDay
from
(
select dateadd(dd,number,@sDate) AS dates from master..spt_values
where type='p' and dateadd(dd,number,@sDate)<=@eDate
) d
) d2 group by d2.weekRange,d2.FirstDay,d2.EndDay
--SELECT datepart(WEEK,@sDate) weekRange
--,dateadd(Day,1-(DATEPART(Weekday,@sDate)+@@DATEFIRST-1)%7,@sDate) FirstDay
--,dateadd(wk, datediff(wk,0,@sDate), 6) EndDay
--select datepart(WEEKDAY,@sDate)
执行结果: