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 |
+-----------------------------+