當心:正確周計算是比你想象的一般棘手!
如果您使用Datepart(week, aDate)
您對「周」這個概念做了很多假設。 星期一或星期一開始嗎?你如何處理第一週和第五週的過渡。這取決於你使用哪一週計算規則周在一年的實際數量是不同的(first4dayweek,weekOfJan1等)
,如果你只是想處理的差異,你可以,如果首先使用
DATEDIFF('s', firstDateTime, secondDateTime) > (7 * 86400 * numberOfWeeks)
日期時間是在2011-01-01 15:43:22
則差值是5周後2011-02-05 15:43:22
編輯:實際上,根據這個帖子:Wrong week number using DATEPART in SQL Server 您可以現在使用Datepart(isoww, aDate)
獲得ISO 8601週數。我知道week
壞了,但並不是說現在有一個修復。涼!
這工作,如果你使用的是週一是一週
set language = british
select datepart(ww, @endofMonthDate) -
datepart(ww, @startofMonthDate) + 1
- 日期部分是language sensistive的第一天。通過將語言設置爲
british
,您可以在星期一進行本週的第一天。
- 這將返回2010年和2012年6月feburary的正確的值! (因爲星期一而不是星期日是一週的第一天)。
- 它似乎也會在一月和十二月(不分年份)恢復正確的週數。
isoww
參數使用星期一作爲一週的第一天,但它會導致1月有時在第52/53周開始,12月有時在第1周結束(這會使您的選擇語句更復雜)
你尋找特定月份中的週數(全部和部分)?例如,你會說2011年4月涵蓋5周和2011年10月涵蓋6周嗎? – JohnK813 2011-04-07 13:31:11
您能否澄清您感興趣的日期相關差異?具體的幾個星期,具體的幾個月?相對於什麼?具體日期?一個特定的日期和時間? – 2011-04-07 13:32:44
@ilivewithian:看看我修改後的答案 – 2011-04-07 14:03:41