MariaDBでは、YEARWEEK()
は、特定の日付の年と週を返す組み込みの日付と時刻の関数です。
2つの引数を受け入れます。年と週を抽出する日付、および結果で使用するモードを指定するオプションのmode引数。
週を0
の範囲の数値として返します 53
へ または1
53
へ 、使用されているモードによって異なります。また、結果の年は、その年の最初と最後の週の日付引数の年とは異なる場合があります。
構文
構文は次のようになります:
YEARWEEK(date), YEARWEEK(date,mode)
これも次のように表現できます:
YEARWEEK(date[,mode])
date
年と週を取得する日付式であり、mode
使用するモードを指定できるオプションの引数です。
モード
オプションのmode
引数は、週が日曜日と月曜日のどちらで始まるか、および戻り値が0
の範囲にあるかどうかを決定します。 53
へ または1
から 53
へ 。
mode引数は、次のいずれかになります。
モード | 第1日 | 範囲 | 第1週は第1週です… |
---|---|---|---|
0 | 日曜日 | 0-53 | 今年の日曜日 |
1 | 月曜日 | 0-53 | 今年は3日以上 |
2 | 日曜日 | 1-53 | 今年の日曜日 |
3 | 月曜日 | 1-53 | 今年は3日以上 (ISO 8601:1988に準拠) |
4 | 日曜日 | 0-53 | 今年は3日以上 |
5 | 月曜日 | 0-53 | 今年の月曜日 |
6 | 日曜日 | 1-53 | 今年は3日以上 |
7 | 月曜日 | 1-53 | 今年の月曜日 |
mode引数を省略した場合、default_week_format
の値 システム変数が使用されます。
default_week_format
の値を確認しましょう システム変数:
SELECT @@default_week_format;
結果:
+-----------------------+ | @@default_week_format | +-----------------------+ | 0 | +-----------------------+
ここで、YEARWEEK()
を実行すると モードを指定せずに、モード0
を使用します 。
例
YEARWEEK()
を呼び出す例を次に示します。 モードを指定せずに:
SELECT YEARWEEK('2030-01-01');
結果:
+------------------------+ | YEARWEEK('2030-01-01') | +------------------------+ | 202952 | +------------------------+
この場合、結果の年と週は前年のものです。
モードを指定する
モードを指定する例は次のとおりです。
SELECT YEARWEEK('2030-01-01', 1);
結果:
+---------------------------+ | YEARWEEK('2030-01-01', 1) | +---------------------------+ | 203001 | +---------------------------+
今回は結果が異なります。
同じ日付のすべてのモードを実行してみましょう:
SELECT
YEARWEEK('2030-01-01', 0),
YEARWEEK('2030-01-01', 1),
YEARWEEK('2030-01-01', 2),
YEARWEEK('2030-01-01', 3),
YEARWEEK('2030-01-01', 4),
YEARWEEK('2030-01-01', 5),
YEARWEEK('2030-01-01', 6),
YEARWEEK('2030-01-01', 7);
結果(垂直出力を使用):
YEARWEEK('2030-01-01', 0): 202952 YEARWEEK('2030-01-01', 1): 203001 YEARWEEK('2030-01-01', 2): 202952 YEARWEEK('2030-01-01', 3): 203001 YEARWEEK('2030-01-01', 4): 203001 YEARWEEK('2030-01-01', 5): 202953 YEARWEEK('2030-01-01', 6): 203001 YEARWEEK('2030-01-01', 7): 202953
日時の値
YEARWEEK()
関数は日時値でも機能します:
SELECT YEARWEEK('2030-08-01 10:30:45');
結果:
+---------------------------------+ | YEARWEEK('2030-08-01 10:30:45') | +---------------------------------+ | 203030 | +---------------------------------+
数値日付
日付として意味がある限り、日付を数値として渡すこともできます。
例
SELECT YEARWEEK(20301125);
結果:
+--------------------+ | YEARWEEK(20301125) | +--------------------+ | 203047 | +--------------------+
または、次の場合でも(2桁の年を使用):
SELECT YEARWEEK(301125);
結果:
+------------------+ | YEARWEEK(301125) | +------------------+ | 203047 | +------------------+
しかし、それは日付として意味をなさなければなりません。日の部分を無効な日に増やすと、次のようになります。
SELECT YEARWEEK(20301135);
結果:
+--------------------+ | YEARWEEK(20301135) | +--------------------+ | NULL | +--------------------+ 1 row in set, 1 warning (0.000 sec)
null
を返しました 警告付き。
警告を見てみましょう:
SHOW WARNINGS;
結果:
+---------+------+--------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------+ | Warning | 1292 | Incorrect datetime value: '20301135' | +---------+------+--------------------------------------+
その他の区切り文字
日付には他の区切り文字を使用できます。 MariaDBは、日付の区切り文字に関しては非常に寛容です。いくつかの有効な例を次に示します。
SELECT
YEARWEEK('2030/06/25'),
YEARWEEK('2030,06,25'),
YEARWEEK('2030:06:25'),
YEARWEEK('2030;06!25');
結果(垂直出力を使用):
YEARWEEK('2030/06/25'): 203025 YEARWEEK('2030,06,25'): 203025 YEARWEEK('2030:06:25'): 203025 YEARWEEK('2030;06!25'): 203025
現在の日付
NOW()
を渡すことができます 現在の日付を使用する日時引数として:
SELECT
NOW(),
YEARWEEK(NOW());
結果:
+---------------------+-----------------+ | NOW() | YEARWEEK(NOW()) | +---------------------+-----------------+ | 2021-05-17 09:08:23 | 202120 | +---------------------+-----------------+
無効な引数
無効な引数が渡されると、YEARWEEK()
null
を返します :
SELECT YEARWEEK('2030-65-78');
結果:
+------------------------+ | YEARWEEK('2030-65-78') | +------------------------+ | NULL | +------------------------+ 1 row in set, 1 warning (0.000 sec)
警告を表示しましょう:
SHOW WARNINGS;
結果:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2030-65-78' | +---------+------+----------------------------------------+
引数がありません
YEARWEEK()
を呼び出す 引数の数が間違っているか、引数を渡さないと、エラーが発生します:
SELECT YEARWEEK();
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'YEARWEEK'
そして別の例:
SELECT YEARWEEK('2030-12-10', 1, 2);
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'YEARWEEK'