MySQLでは、YEARWEEK()
関数は、指定された日付の年と週を返します。引数として日付を指定すると、関数はそれに応じて結果を返します。
また、週を日曜日と月曜日のどちらで開始するか、および週を0から53または1から53の範囲にするかどうかを指定するオプションもあります。
構文
次の2つの形式のいずれかを使用できます。
YEARWEEK(date) YEARWEEK(date,mode)
場所:
date
年と週の番号を返す日付です。mode
は、週を日曜日と月曜日のどちらで開始するか、および週を0から53または1から53の範囲にするかを指定する数値です。可能なモード値については、以下の表を参照してください。
モードが指定されていない場合、モードは0
です。 。
例1-基本的な使用法
実例を示します。
SELECT YEARWEEK('2021-01-25') As 'Result';
結果:
+--------+ | Result | +--------+ | 202104 | +--------+
日付が異なる例を次に示します。
SELECT YEARWEEK('1999-12-25') As 'Result';
結果:
+--------+ | Result | +--------+ | 199951 | +--------+
例2–モードを指定する
2番目の引数を指定しない場合、YEARWEEK()
関数は0
を使用します モードとして。
ただし、使用するモードを指定するための2番目の引数を指定するオプションもあります。例:
SELECT YEARWEEK('2019-11-23', 7) AS 'Mode 7';
結果:
+--------+ | Mode 7 | +--------+ | 201946 | +--------+
可能なモード値は次のとおりです。
モード | 最初の曜日 | 範囲 | 第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 | 今年の月曜日 |
これらは、WEEK()
で使用できる値と同じです。 機能。
これら2つの関数の違いの1つは、WEEK()
関数は、デフォルトモードをdefault_week_format
から派生させます システム変数(この変数のデフォルト値は0
です。 )。 YEARWEEK()
一方、この設定を無視し、0
を使用します デフォルト値として(default_week_format
に関係なく) 設定)。
例3–モードの比較
使用しているモードに応じてさまざまな結果を得る方法を簡単に比較します。
次の3つの例では、同じコードを使用していますが、日付が3つ異なります。これらの日付は連続しています– 1月5日、6日、7日に発生します。ご覧のとおり、正確な日付と使用されているモードによって、結果は大きく異なる可能性があります。
日付1
SET @date = '2019-01-05'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
結果:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201852 | 201901 | 201852 | 201901 | 201901 | 201853 | 201901 | 201853 | +--------+--------+--------+--------+--------+--------+--------+--------+
日付2
SET @date = '2019-01-06'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
結果:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201901 | 201901 | 201901 | 201901 | 201902 | 201853 | 201902 | 201853 | +--------+--------+--------+--------+--------+--------+--------+--------+
日付3
SET @date = '2019-01-07'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
結果:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201901 | 201902 | 201901 | 201902 | 201902 | 201901 | 201902 | 201901 | +--------+--------+--------+--------+--------+--------+--------+--------+