MSSql中,这句查询本月的第一个星期一是怎么运行的,原理是什么?

selectDATEADD(wk,DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())),0)... select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0) 展开
 我来答
你好师姐
2011-05-31 · TA获得超过123个赞
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:140万
展开全部
从这句开始理解:
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,以此类推。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式