ADD_MONTHS スカラー関数

ADD_MONTHS 関数は、expression を表す日時値と、指定された月数を戻します。

Read syntax diagramSkip visual syntax diagramADD_MONTHS(expression, numeric-expression)

スキーマは SYSIBM です。

expression
開始日付を指定する式。 この式は、DATE または TIMESTAMP のいずれかの組み込みデータ・タイプの値を戻さなければなりません。
numeric-expression
組み込み数値データ・タイプの値を戻す式。 値がタイプ INTEGER でない場合、その値は関数を評価する前に暗黙的に INTEGER にキャストされます。 numeric-expression は、expression で指定される開始日付に加算する月数を指定します。 負の数値も許可されます。

関数の結果のデータ・タイプは、expression と同じになります。ただし、expression がストリングの場合は、結果のデータ・タイプは DATE になります。 結果は NULL 値になることがあります。いずれかの引数が NULL 値である場合、結果は NULL 値になります。

expression が月の最後の日付である場合、または算出された月の日数が、expression の日付コンポーネントよりも少ない場合、結果は、算出された月の最後の日付になります。 それ以外の場合、結果の日付コンポーネントは expression と同じになります。 expression に含まれる情報は、時間、分、秒または 1 秒未満の値にいたるまで、関数によって変更されることはありません。

  • 例 1: 本日の日付が 2007 年 1 月 31 日であるとします。 ホスト変数 ADD_MONTH に、1 月の最後の日付に 1 カ月を加算した値を設定します。
    
         SET :ADD_MONTH = ADD_MONTHS(LAST_DAY(CURRENT_DATE), 1);

    ホスト変数 ADD_MONTH には、2 月の最後の日付を表す値 (2007-02-28) が設定されます。

  • 例 2: DATE がホスト変数で、1965 年 7 月 27 日の値が設定されているとします。 ホスト変数 ADD_MONTH に、その日付に 3 カ月を加算した値を設定します。
    
         SET :ADD_MONTH = ADD_MONTHS(:DATE,3);

    ホスト変数 ADD_MONTH には、3 カ月を加算した日付を表す値 (1965-10-27) が設定されます。

  • 例 3: ADD_MONTHS 関数を使用して、日時算術計算と同様の結果を得ることができます。 以下の例で、その 2 つの類似点と相違点を示します。
    
         SET :DATEHV = DATE('2008-2-28') + 4 MONTHS;
         SET :DATEHV = ADD_MONTHS('2008-2-28', 4);
    

    どちらの場合も、ホスト変数 DATEHV には値 '2008-06-28' が設定されます。

    今度は、同じ例で 日付 '2008-2-29' を引数にします。

    
         SET :DATEHV = DATE('2008-2-29') + 4 MONTHS;

    ホスト変数 DATEHV には、値 '2008-06-29' が設定されます。

    
         SET :DATEHV = ADD_MONTHS('2008-2-29', 4);

    ホスト変数 DATEHV には、値 '2008-06-30' が設定されます。

    この場合、ADD_MONTHS 関数は、2008 年 6 月 29 日ではなく、その月の最後の日付である 2008 年 6 月 30 日を戻します。 2 月 29 日がその月の最後の日付であるためです。 したがって、ADD_MONTHS 関数は 6 月の最後の日付を戻します。