MSSql中,这句查询本月的第一个星期一是怎么运行的,原理是什么?
发布网友
发布时间:2022-05-05 11:15
我来回答
共2个回答
懂视网
时间:2022-05-05 15:36
查询给定日期所在月的第一个星期一是哪天sql语句:查询给定日期所在月的第一个星期一是哪天 sql语句 查询给定日期所在月的第一个星期一是哪天 sql语句 declare @date datetime; set @date = getdate() --思路,1900-01-01(星期一)加上(给定日志所在月的月6号与1900-01-01差的周数)个周 --为
热心网友
时间:2022-05-05 12:44
从这句开始理解:
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,以此类推。