さて、今週と先週の比較を行うレポートがありますが、お客様はデータが「ファンキー」であることに気付きました。さらに調査した結果、ISO規格に従って数週間は正しく動作していませんでした。このスクリプトをテストケースとして実行しました。
SET DATEFIRST 1
SELECT DATEPART(WEEK, '3/26/13')
, DATEPART(WEEK, '3/27/12')
, DATEPART(WEEK, '3/20/12')
, DATEPART(WEEK, '1/2/12')
SELECT DATEPART(ISO_WEEK, '3/26/13')
, DATEPART(ISO_WEEK, '3/27/12')
, DATEPART(ISO_WEEK, '3/20/12')
, DATEPART(ISO_WEEK, '1/2/12')
実行すると、これらの結果が得られました。
これは奇妙だと思ったので、さらに掘り下げてみると、SQL Serverは1月1日を年の最初の週としてカウントし、ISOは1月の最初の日曜日を年の最初の週としてカウントします。
質問は最終的に2倍になります。質問1これはなぜですか?質問2これを変更する方法はあるので、ISO_Week
どこでも使用するためにすべてのコードを変更する必要はありませんか?