TO_YMINTERVAL

構文

ym_iso_format::=

目的

TO_YMINTERVALは、その引数をINTERVAL MONTH TO YEARデータ型の値に変換します。

引数には、CHARVARCHAR2NCHARまたは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、hoursminutessecondsおよびfrac_secsは、負でない整数になります。負の整数を指定した場合は、無視されます。値には空白を使用できません。Tを指定する場合は、hoursminutesまたはsecondsの値を少なくとも1つ指定する必要があります。

オプションのDEFAULT return_value ON CONVERSION ERROR句により、引数からINTERVAL MONTH TO YEAR型への変換中にエラーが発生した場合にこのファンクションで戻される値を指定できます。引数の評価中にエラーが発生した場合、この句による影響はありません。return_valueは式またはバインド変数にすることができ、CHARVARCHAR2NCHARまたはNVARCHAR2のデータ型の文字列と評価される必要があります。これは、SQL書式とISO書式のいずれかにすることができ、ファンクションの引数と同じ書式にする必要はありません。return_valueINTERVAL 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