1. 法一
set @FromDate = DATEADD(dd, -(DATEPART(WEEKDAY, Getdate())-2), DATEADD(dd, DATEDIFF(dd, 0, Getdate() ), 0))
set @Todate = DATEADD(dd, 7-(DATEPART(WEEKDAY, Getdate())-1), DATEADD(dd, DATEDIFF(dd, 0, Getdate()), 0));
释义:
Getdate() 当前日期时间 "2020-07-17 10:54:34.467"
DATEDIFF(dd, 0, Getdate() ) 当前日期与"1900-01-01"的时间差. 结果:"44027"
DATEADD(dd, DATEDIFF(dd, 0, Getdate() ), 0) 获取日期时间取零 结果"2020-07-17 00:00:00.000"
DATEPART(WEEKDAY, Getdate()) 得到一周中的第几天(老外周日是第一天) 结果:6
@FromDate 获取当天日期所在周周一的日期 "2020-07-13 00:00:00.000"
@Todate 获取当天日期所在周周日的日期 "2020-07-13 00:00:00.000"
2. 法二,计算当前日期所在周的周一的日期
select DATEADD(WK, DATEDIFF(WK, 0, dateadd(dd, 7*0, getdate())), 0)
dateadd(dd, 7*0, getdate()) 一个日期yy**
DATEDIFF(WK, 0, dateadd(dd, 7*0, getdate())), 0) 日期yy**与1900-01-01之间的week差
DATEADD(WK, DATEDIFF(WK, 0, dateadd(dd, 7*0, getdate())), 0) 日期yy**所在周的周一的日期