ADD_MONTHS スカラー関数
ADD_MONTHS 関数は、expression に指定の月数を加えた日付を戻します。
スキーマは SYSIBM です。
- 式
- 開始日付を指定する式。 expression は、日付、タイム・スタンプ、または日付かタイム・スタンプの有効なストリング表現の値を戻す必要があります。 ストリング表現は、組み込みの文字ストリング・データ・タイプまたはグラフィック・ストリング・データ・タイプ (LOB 以外) で、実際の長さが 255 バイトを超えない値です。 タイム・スタンプのストリング表現内のタイム・ゾーンは無視されます。 日付とタイムスタンプの文字列表現の有効な形式については、「日時値の文字列表現」 を参照してください。
expression が TIMESTAMP WITH TIME ZONE 値である場合、expression は、最初に expression と同じ精度を持つ TIMESTAMP WITHOUT TIME ZONE 値にキャストされます。 expression がストリングである場合、expression は最初に DATE にキャストされます。
- 数値式
- 組み込み数値データ・タイプの値を戻す式。 numeric-expression の整数部分は、式で指定された開始日に追加する月数を指定します。 負の数値も使用できます。
numeric-expression を、文字ストリングまたはグラフィック・ストリングのデータ・タイプにすることもできます。 ストリング入力は、暗黙的に DECFLOAT(34) の数値にキャストされます。
expression がタイム・ゾーン付きのタイム・スタンプ値、またはタイム・ゾーン付きのタイム・スタンプ値の有効なストリング表現である場合、結果は日時値の UTC 表現から決定されます。
expression がタイム・スタンプ値である場合、結果は expression と同じ精度を持つ TIMESTAMP WITHOUT TIME ZONE です。 それ以外の場合、結果は DATE 値になります。
結果は NULL 値になることがあります。いずれかの引数が NULL 値である場合、結果は NULL 値になります。
expression が月の最後の日付である場合、または算出された月の日数が、expression の日付コンポーネントよりも少ない場合、結果は、算出された月の最後の日付になります。 それ以外の場合、結果の日付コンポーネントは expression と同じになります。 式に含まれる時間、分、秒、または小数秒の情報は、関数によって変更されません。
結果の CCSID は、引数のコード化スキームに適合する CCSID であり、結果のサブタイプは、CCSID に適合するサブタイプです。
SET :ADD_MONTH = ADD_MONTHS(LAST_DAY(CURRENT_DATE), 1); ホスト変数 ADD_MONTH には、2 月の最終日 (2007-02-28) を表す値で設定されます。 SET :ADD_MONTH = ADD_MONTHS(:DATE,3); ホスト変数 ADD_MONTH は、
その日に 3 カ月を加えた値 (1965-10-27) で設定されます。 SET :DATEHV = DATE('2008-2-28') + 4 MONTHS; SET :DATEHV = ADD_MONTHS('2008-2-28', 4);どちらの場合も、ホスト変数 DATEHV には値「2008-06-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 月の最後の日を戻します。
例4: TSZ がタイムゾーン付きタイムスタンプ値 2008-02-29.20.00.00.000000-08.00 を持つSQL変数であると仮定します。 TIMESZ を、タイム・ゾーン値に 4 か月を加えたタイム・スタンプの値に設定します。SET TIMESZ: = ADD_MONTHS(TIMESTAMP_TZ(TSZ), 4);この関数は、タイム・スタンプに 4 カ月を加えたものを表すタイム・スタンプ値 (2008-06-30-20.00.00.000000-8.00) を戻します。 ADD_MONTHS 関数の結果にはタイム・ゾーンは含まれません。
例5: TSZ がホスト変数で、値が「 2008-02-29-20.00.000000-08.00 」であると仮定します。これは、タイムゾーン付きタイムスタンプの文字列表現です。 TIMESZ をそのタイム・ゾーン付きのタイム・スタンプの値に 4 カ月を加えた値に設定します。SET TIMESZ: = ADD_MONTHS(:TSZ, 4);入力としてタイム・スタンプのストリング表現を使用すると、ADD_MONTHS 関数は、タイム・スタンプに 4 カ月を加えた 2008-06-30 を表す DATE 値を戻します。 ホスト変数 TIMESZ は、タイムゾーン付きタイムスタンプに4ヶ月を加えた値で設定されます。
