TO_YMINTERVAL
構文
ym_iso_format::=
目的
TO_YMINTERVAL
は、その引数をINTERVAL
MONTH
TO
YEAR
データ型の値に変換します。
引数には、CHAR
、VARCHAR2
、NCHAR
またはNVARCHAR2
のデータ型の文字列と評価される任意の式を指定できます。
TO_YMINTERVAL
は、2つの書式のいずれかの引数を取ります。
-
SQL規格(ISO/IEC 9075:2003)に準拠したSQL期間書式(ISO/IEC 9075)
-
ISO 8601:2004規格に準拠したISO存続期間書式
SQL書式では、years
は0(ゼロ)から999999999の整数、months
は0(ゼロ)から11の整数になります。これ以外に、書式要素の間に空白を使用できます。
ISO書式では、yearsとmonthsは、0(ゼロ)から999999999の整数になります。days、hours
、minutes
、seconds
およびfrac_secsは、負でない整数になります。負の整数を指定した場合は、無視されます。値には空白を使用できません。T
を指定する場合は、hours
、minutes
またはseconds
の値を少なくとも1つ指定する必要があります。
オプションのDEFAULT
return_value
ON
CONVERSION
ERROR
句により、引数からINTERVAL
MONTH
TO
YEAR
型への変換中にエラーが発生した場合にこのファンクションで戻される値を指定できます。引数の評価中にエラーが発生した場合、この句による影響はありません。return_value
は式またはバインド変数にすることができ、CHAR
、VARCHAR2
、NCHAR
またはNVARCHAR2
のデータ型の文字列と評価される必要があります。これは、SQL書式とISO書式のいずれかにすることができ、ファンクションの引数と同じ書式にする必要はありません。return_value
をINTERVAL
MONTH
TO
YEAR
型に変換できない場合は、エラーが戻されます。
例
次の例では、サンプル表hr.employees
の各従業員の雇用された後から1年と2か月後の日付を計算します。
SELECT hire_date, hire_date + TO_YMINTERVAL('01-02') "14 months" FROM employees; HIRE_DATE 14 months --------- --------- 17-JUN-03 17-AUG-04 21-SEP-05 21-NOV-06 13-JAN-01 13-MAR-02 20-MAY-08 20-JUL-09 21-MAY-07 21-JUL-08 . . .
次の例では、ISO書式を使用して同じ計算を行います。
SELECT hire_date, hire_date + TO_YMINTERVAL('P1Y2M') FROM employees;
次の例では、指定した式をINTERVAL
MONTH
TO
YEAR
値に変換できないため、デフォルト値が戻されます。
SELECT TO_YMINTERVAL('1x-02' DEFAULT '00-00' ON CONVERSION ERROR) "Value" FROM DUAL; Value ------------- +000000000-00