week
week
説明
指定された日付の週番号を返します。この関数は、MySQLのWEEK関数と同様の方法で動作します。
この関数はv2.3からサポートされています。
構文
INT WEEK(DATETIME|DATE date, INT mode)
パラメータ
date
: サポートされるデータ型はDATETIMEとDATEです。mode
: オプションです。サポートされるデータ型はINTです。このパラメータは、週番号の計算ロジックを指定するために使用されます。つまり、週の開始が日曜日または月曜日であり、返される値が0〜53または1〜53の範囲内かを指定します。値の範囲: 0〜7。デフォルト値:0
。このパラメータが指定されていない場合、デフォルトでモード0
が使用されます。以下の表は、このパラメータの動作を説明しています。
モード | 週の開始曜日 | 範囲 | 週1は最初の週であるかどうか … |
---|---|---|---|
0 | 日曜日 | 0-53 | その年の日曜日を含む |
1 | 月曜日 | 0-53 | その年の日数が4以上 |
2 | 日曜日 | 1-53 | その年の日曜日を含む |
3 | 月曜日 | 1-53 | その年の日数が4以上 |
4 | 日曜日 | 0-53 | その年の日数が4以上 |
5 | 月曜日 | 0-53 | その年の月曜日を含む |
6 | 日曜日 | 1-53 | その年の日数が4以上 |
7 | 月曜日 | 1-53 | その年の月曜日を含む |
戻り値
INT型の値を返します。値の範囲: 0〜53。具体的な範囲はmode
パラメータに基づいて決定されます。date
の値が無効であるか、入力値が空の場合、NULL
が返されます。
例
2007-01-01
の週番号を計算します。2007-01-01
はカレンダー上で月曜日です。
Mode
が0
に設定され、0
が返されます。週の開始日が日曜日であり、2007-01-01
が月曜日であり、週1になることはありません。したがって、0
が返されます。
mysql> SELECT WEEK('2007-01-01', 0);
+-----------------------+
| week('2007-01-01', 0) |
+-----------------------+
| 0 |
+-----------------------+
1 row in set (0.02 sec)
Mode
が1
に設定され、1
が返されます。週の開始日が月曜日であり、2007-01-01
も月曜日です。
mysql> SELECT WEEK('2007-01-01', 1);
+-----------------------+
| week('2007-01-01', 1) |
+-----------------------+
| 1 |
+-----------------------+
1 row in set (0.02 sec)
Mode
が2
に設定され、53
が返されます。週の開始日が日曜日ですが、2007-01-01
は月曜日であり、値の範囲は1〜53です。したがって、前年の最後の週であることを示すために53
が返されます。
mysql> SELECT WEEK('2007-01-01', 2);
+-----------------------+
| week('2007-01-01', 2) |
+-----------------------+
| 53 |
+-----------------------+
1 row in set (0.01 sec)