月曜日を週の最初の曜日として開始する DATE から週の数を取得したいと思います。WEEK() はこれを部分的に実現できますが、各週を一意に識別したいと考えています。つまり、52 または 53 で 0 または 1 にロールオーバーするのではなく、54、55 などの週まで数え続けます。
SQLでこれを達成する最良の方法は何ですか?
週番号が連続している必要がある場合 (おそらく時間範囲を計算するため)、過去の任意の日曜日を選択して第 1 週とし、その日からの日数を数え、7 で割ることができます (日曜日を選択すると、月曜日が月曜日になります)。週初め。)
SELECT CEIL( DATEDIFF( '2013-01-04', '1970-01-04' ) / 7 ) AS week; # 2244
一意の識別だけが必要な場合はYEARWEEK()
、 get201253
などに使用できます201301
。
SELECT YEARWEEK( '2013-01-04', 1 ) AS week; # 201301