3

月曜日を週の最初の曜日として開始する DATE から週の数を取得したいと思います。WEEK() はこれを部分的に実現できますが、各週を一意に識別したいと考えています。つまり、52 または 53 で 0 または 1 にロールオーバーするのではなく、54、55 などの週まで数え続けます。

SQLでこれを達成する最良の方法は何ですか?

4

2 に答える 2

9

週番号が連続している必要がある場合 (おそらく時間範囲を計算するため)、過去の任意の日曜日を選択して第 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
于 2013-01-04T18:30:31.750 に答える