2017-05-22 46 views
2

我有以下的sql返回最後一個星期一的日期。tsql返回的日期是什麼

SELECT DATEADD(wk, DATEDIFF(wk, 6, GETDATE()), 0) //2017-05-15 00:00:00.000 

但是在試圖瞭解這已經制定出來,我很爲迷茫 什麼通過以下返回的6124代表

SELECT DATEDIFF(wk, 6, GETDATE()) 

這只是上週爲什麼是這樣的高數量?

還怎麼能偏移是一個固定的號碼,仍然能夠制定出上週一

回答

0

這是1900年一月的星期天的日期......

SELECT 
DATEDIFF(wk, '1/1/1900','5/20/2017'), 
DATEDIFF(wk, '1/1/1900',GETDATE()) 

具體來說,他們是使用DATETIMEOFFSET而不是實際的DATETIME這是DATEDIFF

所以可以接受的參數來回答你的問題,這是週數(因爲你指定的周)從第一星期天在1900年1月至當天。

0

6datediffstartdate參數又是另一種一個星期,以減少輸出,所以它因爲1900-01-06而不是1900-01-01(一個的差)返回多少個星期。

這兩個語句將返回相同的結果:

select dateadd(week, datediff(week, 6, getdate()),0) 
select dateadd(week, datediff(week, 0, getdate())-1,0) 

就在這個部分:因爲1900-01-06datediff(week, 6, getdate()返回周(6124)的數量,當加入的1900-01-01日期爲您提供了上週開始。

相關問題