2017-08-13 82 views
1

作爲星期天的第一天的星期天的SQL服務器設置,我有一個問題(並且作爲閱讀,它不僅僅是我)。但是我的公司需要幾個星期才能覆蓋週一到週日的時間。我試過SET DATEFIRST 1,但它不影響結果。一個簡單的例子:今天是星期天;當我在SQL中輸入以下代碼,它的結果在33個星期,但它應該顯示32周和33周應該從明天開始:SQL Server:星期一作爲星期的開始

SET DATEFIRST 1 
Select DatePart(week, getdate()); 

我改變了語言,我的登錄設置,以英式英語,位它也沒有工作。有其他方法可以更改設置嗎? 在大多數我的查詢,我需要顯示上週的結果,具有相似的where子句:

WHERE Week = (Select DatePart(week, getdate())-1) 

如果我不能全局性地更改設置,比它怎麼可能轉化上子句這樣才能顯示週一到週日的結果?我是一名SQL初學者,在互聯網上搜索了一個答案,但無法調整我的代碼。先謝謝你!

+0

您是否在設置SET DATEFIRST 1後試過'DATEPART(ISO_WEEK,...)'? –

+0

是的,現在它正在工作!正如你所建議的那樣,我只用ISO_WEEK取代了WEEK,即使沒有SET DATEFIRST 1,也會在第32周結果。也許是因爲我把語言改成英式英語。非常感謝! :) –

回答

2

設置SET DATEFIRST 1後使用DATEPART(ISO_WEEK, ...)。這應該遵守ISO周編號,如DATEPART documentation中所述。

相關問題