ADD_MONTHS

ADD_MONTHS 関数は、expressionnumeric-expression の月数を加えた日付またはタイム・スタンプを戻します。

構文図を読む構文図をスキップする
>>-ADD_MONTHS--(--expression--,--numeric-expression--)---------><

expression
日付、タイム・スタンプ、文字ストリング、またはグラフィック・ストリングのいずれかの組み込みデータ・タイプの値を戻す式。

expression が 文字ストリングまたはグラフィック・ストリングの場合、その値は、日付またはタイム・スタンプの有効なストリング表現 でなければなりません。日付とタイム・スタンプのストリング表現の有効な形式に ついては、日付/時刻の値のストリング表記を参照してください。

numeric-expression
ゼロのスケールの組み込み数値データ・タイプの値を戻す式。負の数値は許可されます。

expression がタイム・スタンプの場合、この関数の結果は、expression と同じ精度のタイム・スタンプです。 そうでない場合、この関数の結果は日付です。引数のどちらかが NULL になる可能性がある場合は、結果も NULL になる可能性が あります。引数のどちらかが NULL である場合は、結果は NULL 値になります。

が月の最後の日であるか、または結果の月に の日のコンポーネントより少ない日数しか含まれない場合、結果は、結果の月の最後の日になります。その他の場合、結果は と同じ日のコンポーネントを持ちます。

  • 今日が 2000 年 1 月 31 日であると想定します。ホスト変数 ADD_MONTH に、1 月の最後の日に 1 カ月を加えたものを設定します。
    SET :ADD_MONTH = ADD_MONTHS(LAST_DAY(CURRENT_DATE), 1 ) 

    ホスト変数 ADD_MONTH は、2 月の終わりである 2000-02-29 を表す値で設定されます。

  • DATE が 1965 年 7 月 27 日の値のホスト変数であると想定します。ホスト変数 ADD_MONTH に、この日の値に 3 カ月を加えたものを設定します。
    SET :ADD_MONTH = ADD_MONTHS(:DATE, 3)

    ホスト変数 ADD_MONTH は、この日に 3 カ月を足した 1965-10-27 を表す値で設定されます。

  • ADD_MONTHS 関数と日付の算術計算で、類似した結果を得ることができます。以下の例では、類似点と差異が分かります。
    SET :DATEHV = DATE('2000-2-28') + 4 MONTHS
    SET :DATEHV ADD_MONTHS('2000-2-28', 4)

    どちらの場合も、ホスト変数 DATEHV には値「2000–06–28」が設定されます。

    今度は、同じ例で日付「2000–2–29」を引数として使用してみます。

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

    ホスト変数 DATEHV には値「2000–06–29」が設定されます。

    SET :DATEHV ADD_MONTHS('2000-2-29', 4)

    ホスト変数 DATEHV には値「2000–06–30」が設定されます。

    この場合、ADD_MONTHS 関数は、2000 年 6 月 29 日ではなく、月の最後の日である 2000 年 6 月 30 日を戻します。理由は、2 月 29 日が月の最後の日だからです。それで、ADD_MONTHS 関数は 6 月の最後の日を戻します。