この関数は date
に週の数を戻します。WEEK()
の、引数がふたつのフォームによって、週が日曜で始まるか、月曜で始まるか、また、戻り値の範囲は 0
から 53
か、1
から 53
かを指定することが可能です。mode
引数が省略された場合は、default_week_format
システム環境変数の値が使用されます。詳細は 項4.2.3. 「システム変数」 を参照してください。
次のテーブルは、mode
引数がどのように作用するかを示したものです。
開始日 | |||
モード | 曜日 | 範囲 | Week 1 は下記の最初の週… |
0 | 日曜日 | 0-53 | この年の日曜日 |
1 | 月曜日 | 0-53 | この年は 3 日以上 |
2 | 日曜日 | 1-53 | この年は日曜日 |
3 | 月曜日 | 1-53 | この年は 3 日以上 |
4 | 日曜日 | 0-53 | この年は 3 日以上 |
5 | 月曜日 | 0-53 | この年は月曜日 |
6 | 日曜日 | 1-53 | この年は 3 日以上 |
7 | 月曜日 | 1-53 | この年は月曜日 |
mysql>SELECT WEEK('1998-02-20');
-> 7 mysql>SELECT WEEK('1998-02-20',0);
-> 7 mysql>SELECT WEEK('1998-02-20',1);
-> 8 mysql>SELECT WEEK('1998-12-31',1);
-> 53
日付が先年の最後の週に該当する場合、2
、3
、6
、または 7
をオプションの mode
引数として使用しなければ、MySQL は 0
を戻すので注意してください :
mysql> SELECT YEAR('2000-01-01'), WEEK('2000-01-01',0);
-> 2000, 0
与えられた日付が 1999 年の 52 週目に発生するため、MySQL は WEEK()
関数に 52
を戻すべきだという意見もあります。しかし当社では、関数が 「与えらた年の週の」 を戻すべきだと考え、0
を戻しています。これにより、日付から日にち部分を摘出する他の関数と併用する際に、WEEK()
関数をより信頼して使用できるようになっています。
結果において、与えられた日付の週の最初の日を含む年の評価をしたい場合は、0
、2
、5
、または 7
を、オプションの mode
引数として使用してください。
mysql> SELECT WEEK('2000-01-01',2);
-> 52
その替わりとして、YEARWEEK()
関数を使用することもできます :
mysql>SELECT YEARWEEK('2000-01-01');
-> 199952 mysql>SELECT MID(YEARWEEK('2000-01-01'),5,2);
-> '52'