TO_DSINTERVAL

構文

sql_format::=

ds_iso_format::=

ノート:

以前のリリースでは、TO_DSINTERVALファンクションはオプションのnlsparam句を受け入れました。この句は下位互換性のために現在も受け入れられますが、効果はありません。

目的

TO_DSINTERVALは、その引数をINTERVAL DAY TO SECONDデータ型の値に変換します。

引数には、CHARVARCHAR2NCHARまたはNVARCHAR2のデータ型の文字列と評価される任意の式を指定できます。

TO_DSINTERVALは、2つの書式のいずれかの引数を取ります。

  • SQL規格(ISO/IEC 9075:2003)に準拠したSQL期間書式(ISO/IEC 9075)

  • ISO 8601:2004規格に準拠したISO存続期間書式

SQL書式では、daysは0(ゼロ)から999999999の整数、hoursは0(ゼロ)から23の整数、minutessecondsは0(ゼロ)から59の整数になります。frac_secsは秒の小数部であり、.0から.999999999になります。日付と時間は1つ以上の空白で区切ります。これ以外に、書式要素の間に空白を使用できます。

ISO書式では、dayshoursminutesおよびsecondsは、0(ゼロ)から999999999の整数になります。frac_secsは秒の小数部であり、.0から.999999999になります。値には空白を使用できません。Tを指定する場合は、hoursminutesまたはsecondsの値を少なくとも1つ指定する必要があります。

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

次の例では、SQL書式を使用して、2002年11月1日から100日以上勤務している従業員をhr.employees表から検索します。

SELECT employee_id, last_name FROM employees
   WHERE hire_date + TO_DSINTERVAL('100 00:00:00')
   <= DATE '2002-11-01'
   ORDER BY employee_id;

EMPLOYEE_ID LAST_NAME
----------- ---------------
        102 De Haan
        203 Mavris
        204 Baer
        205 Higgins
        206 Giet

次の例では、ISO書式を使用して、2009年の始めから100日と5時間後のタイムスタンプを表示します。

SELECT TO_CHAR(TIMESTAMP '2009-01-01 00:00:00' + TO_DSINTERVAL('P100DT05H'),
   'YYYY-MM-DD HH24:MI:SS') "Time Stamp"
     FROM DUAL;

Time Stamp
-------------------
2009-04-11 05:00:00

次の例では、指定した式をINTERVAL DAY TO SECOND値に変換できないため、デフォルト値が戻されます。

SELECT TO_DSINTERVAL('1o 1:02:10'
       DEFAULT '10 8:00:00' ON CONVERSION ERROR) "Value"
  FROM DUAL;

Value
-----------------------------
+000000010 08:00:00.000000000