この関数に渡された式は、次のデータ型を持っている必要があります。
- date_timestamp_value = DATE、TIMESTAMP、またはTIMESTAMP WITH TIME ZONE
- num_months = INTEGER
num_months引数では、UDFに適用される暗黙のデータ型変換ルールを使用してINTEGERに変換できるデータ型の値も渡すことができます。date_timestamp_value引数については、暗黙の型変換はサポートされていません。
UDFの暗黙の型変換ルールは、Teradata Databaseで通常使用される暗黙の型変換ルールよりも制限されています。UDFの暗黙の変換ルールに従って、必要なデータ型に変換できない引数は、明示的にキャストする必要があります。
詳細については、<Teradata Vantage™ SQL外部ルーチン プログラミング、B035-1147>の「互換データ型」を参照してください。
TIMESTAMP値は、UTC時間でデータベースに格納されるためタイムゾーンが欠けています。そのため、この関数内ではタイム スタンプ値の解釈にセッションのタイムゾーンを使用します。TIMESTAMP WITH TIME ZONE値の場合、この関数内ではタイム スタンプ値の解釈にタイムゾーン構成要素を使用します。
date_timestamp_valueの日付構成要素がその月の最終日の場合や、結果の月がdate_timestamp_valueの日付構成要素よりも少ない日数になる場合、OADD_MONTHSは結果としての月の最終日を返します。それ以外の場合、OADD_MONTHSはdate_timestamp_valueとして同じ日付構成要素を持つ値を返します。
OADD_MONTHSとADD_MONTHSの相違点は、OADD_MONTHSで月の最終日に月を追加すると、この関数が常に月の最終日を返すことです。次の問合わせは、ADD_MONTHSとOADD_MONTHSの相違点を説明するものです。
- 問合わせ
SELECT ADD_MONTHS ('2008-02-29', 1);
は'08/03/29'を返します。
- 問合わせ
SELECT OADD_MONTHS ('2008-02-29', 1);
は'08/03/31'を返します。