2013-04-24 63 views
0

這是需要一段時間才能找到的錯誤。我在這裏發佈它來拯救別人這個錯誤。爲什麼不每週工作?

(這是非常簡單的,一旦被發現,但它是沒有簡單的 - 和昂貴 - 犯的錯誤。)

爲什麼select datediff(w, getdate()-7, getdate())給予7,而不是1?

+0

* 1分鐘前提問* ... - > *回答19秒前* ...您在寫問題時想到了答案嗎? – phadaphunk 2013-04-24 20:40:29

+0

當我發佈......經過大量搜索和一些不安的客戶後,我已經有了答案。我打算幫助其他人像我一樣卡住。我知道這在SO上並不罕見。 – 2013-04-24 20:42:42

回答

0

w被解釋爲天。從來沒有提到過here,但這似乎意味着幾天的時間。 (我不知道爲什麼這不會給出錯誤,因爲datediff(foo, getdate()-7, getdate())確實......)

正確的單位爲周是wwwk

編輯:@Lamak說w是工作日而不是一天。關於w沒有任何記載(我可以找到),但這可能是正確的。

+1

停止使用任何類型的速記。猜猜DATEPART(Y,GETDATE());產生了什麼? – 2013-04-24 20:45:32

+0

你不能只使用那個參數,'foo'就是其中之一。但是'w'是'weekday',所以它被接受並且結果是正確的。但是,正如Aaron所說的那樣,您應該始終使用'WEEK''''WEEKDAY'或者完整的名稱來代替 – Lamak 2013-04-24 20:47:15

+0

,如文檔所示:http://msdn.microsoft.com/zh-cn/library/ms174420.aspx。僅供參考,我沒有看到任何東西*除了該文檔中的簡寫。 – 2013-04-24 20:48:54