ADD_MONTHS 関数
ADD_MONTHS は日付またはタイムスタンプの値または式に、指定された月数を加算します。DATEADD 関数は同様の機能を提供します。
構文
ADD_MONTHS( {date | timestamp}, integer)
引数
- date | timestamp
-
データ型
DATE
またはTIMESTAMP
の列、あるいはDATE
型またはTIMESTAMP
型に暗黙的に評価される式。date がその月の最終日である場合、または結果の月が短い場合、関数は結果に月の最終日を返します。その他の日付の場合、結果には date 式と同じ日数が含まれます。 - integer
-
データ型
INTEGER
の値。負の数を使用し、日付から月を削除します。
戻り型
TIMESTAMP
例
次のクエリは、TRUNC 関数内の ADD_MONTHS 関数を使用します。TRUNC 関数は、ADD_MONTHS の結果から日付の時刻を削除します。ADD_MONTHS 関数は CALDATE 列の値ごとに 12 か月を追加します。CALDATE 列の値は日付です。
select distinct trunc(add_months(caldate, 12)) as calplus12, trunc(caldate) as cal from date order by 1 asc;
calplus12 | cal ------------+------------ 2009-01-01 | 2008-01-01 2009-01-02 | 2008-01-02 2009-01-03 | 2008-01-03 ... (365 rows)
次の例では、ADD_MONTHS 関数を使用して、timestamp に 1 か月を加算しています。
select add_months('2008-01-01 05:07:30', 1);
add_months --------------------- 2008-02-01 05:07:30
次の例は、ADD_MONTHS 関数が異なる日数の月を持つ日付で実行される動作を示しています。この例は、関数が 3 月 31 日への 1 か月の加算と、4 月 30 日への 1 か月の加算をどのように処理するかを示しています。4 月は 30 日間あるので、3 月 31 日に 1 か月を加えると 4 月 30 日になります。5 月は 31 日間あるので、4 月 30 日に 1 か月を加えると 5 月 31 日になります。
select add_months('2008-03-31',1);
add_months --------------------- 2008-04-30 00:00:00
select add_months('2008-04-30',1);
add_months --------------------- 2008-05-31 00:00:00