MSSql中,这句查询本月的第一个星期一是怎么运行的,原理是什么?
发布网友
发布时间:2022-04-11 01:28
我来回答
共1个回答
热心网友
时间:2022-04-11 02:58
从这句开始理解:
1、select datename(dw,'1900-01-01')
结果是:星期一
2、select datepart(day,getdate())
取得当前的日期数
3、select 6-datepart(day,getdate())
保证日期数不超过1个月,6可以是1-1都可以
4、select dateadd(dd,6-datepart(day,getdate()),getdate())
取得本月第1周的一个日期
5、select DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate()))
取得从0周【取得本月第1周的一个日期】的周数 (5月是5809)
6、select DATEADD(wk, 5809, 0)
这样就得到本月的第一周周1,最后一个参数是星期0,原因是 1900-01-01也是星期1,如果你要周二就改成1,以此类推。