注意:適切な週の計算は、一般的に思っているよりも複雑です!
使用する場合Datepart(week, aDate)
、「週」という概念について多くの仮定を行います。週は日曜日または月曜日に始まりますか? 第 1 週から第 5 週への移行にどのように対処しますか? 1 年の実際の週数は、使用する週の計算規則 (first4dayweek、weekOfJan1 など) によって異なります。
単に違いに対処したい場合は、使用できます
DATEDIFF('s', firstDateTime, secondDateTime) > (7 * 86400 * numberOfWeeks)
最初の dateTime が の場合2011-01-01 15:43:22
、差は 5 週間後です2011-02-05 15:43:22
編集:実際には、この投稿によると: Wrong week number using DATEPART in SQL Server
You can now use Datepart(isoww, aDate)
to get ISO 8601 week number. week
私はそれが壊れていることを知っていましたが、修正されたことは知りませんでした. 涼しい!
これは、月曜日を週の最初の曜日として使用している場合に機能します
set language = british
select datepart(ww, @endofMonthDate) -
datepart(ww, @startofMonthDate) + 1
- Datepart は言語に依存します。言語を設定する
british
と、月曜日が週の最初の日になります。
- これにより、 2010 年 2 月と 2012 年 6 月の正しい値が返されます。(日曜日ではなく月曜日が週の最初の日であるため)。
- また、1月と12月の正しい週数を返すようです(年に関係なく)。この
isoww
パラメーターは月曜日を週の最初の日として使用しますが、1 月が 52/53 週に始まり、12 月が 1 週目に終わることがあります (select ステートメントがより複雑になります)。