add_months
add_months
説明
指定された日付(DATEまたはDATETIME)に、指定された月数を追加します。months_add 関数は似たような機能を提供します。
結果の月の日部分は、date
で指定された日と同じままです。ただし、結果の月の日数が指定された日の日数よりも少ない場合、日は結果の月の最後の日になります。例えば、select add_months('2022-01-31', 1);
の結果は 2022-02-28 00:00:00
となります。一方、結果の月の日数が指定された日の日数よりも多い場合、結果の日は date
と同じになります。例えば、select add_months('2022-02-28', 1);
の結果は 2022-03-28 00:00:00
となります。
Oracleとの違い: Oracleでは、date
が月の最終日である場合、結果は結果の月の最終日になります。
無効な日付またはNULLの引数が渡された場合、NULLが返されます。
構文
ADD_MONTH(date, months)
パラメーター
date
: 有効な日付または日時の式である必要があります。months
: 追加する月数です。整数である必要があります。正の整数はdate
に対して月を追加します。負の整数はdate
から月を引きます。
返り値
DATETIME 値が返されます。日付が存在しない場合、例えば 2020-02-30
のような場合は、NULLが返されます。
日付が DATE 値である場合、それは DATETIME 値に変換されます。
例
> select add_months('2022-01-01', 2);
+-----------------------------+
| add_months('2022-01-01', 2) |
+-----------------------------+
| 2022-03-01 00:00:00 |
+-----------------------------+
> select add_months('2022-01-01', -5);
+------------------------------+
| add_months('2022-01-01', -5) |
+------------------------------+
| 2021-08-01 00:00:00 |
+------------------------------+
> select add_months('2022-01-31', 1);
+-----------------------------+
| add_months('2022-01-31', 1) |
+-----------------------------+
| 2022-02-28 00:00:00 |
+-----------------------------+
> select add_months('2022-01-31 17:01:02', -2);
+---------------------------------------+
| add_months('2022-01-31 17:01:02', -2) |
+---------------------------------------+
| 2021-11-30 17:01:02 |
+---------------------------------------+
> select add_months('2022-02-28', 1);
+-----------------------------+
| add_months('2022-02-28', 1) |
+-----------------------------+
| 2022-03-28 00:00:00 |
+-----------------------------+