TO_DSINTERVAL
構文
sql_format::=
ds_iso_format::=
ノート:
以前のリリースでは、TO_DSINTERVAL
ファンクションはオプションのnlsparam
句を受け入れました。この句は下位互換性のために現在も受け入れられますが、効果はありません。
目的
TO_DSINTERVAL
は、その引数をINTERVAL
DAY
TO
SECOND
データ型の値に変換します。
引数には、CHAR
、VARCHAR2
、NCHAR
またはNVARCHAR2
のデータ型の文字列と評価される任意の式を指定できます。
TO_DSINTERVAL
は、2つの書式のいずれかの引数を取ります。
-
SQL規格(ISO/IEC 9075:2003)に準拠したSQL期間書式(ISO/IEC 9075)
-
ISO 8601:2004規格に準拠したISO存続期間書式
SQL書式では、days
は0(ゼロ)から999999999の整数、hours
は0(ゼロ)から23の整数、minutes
とseconds
は0(ゼロ)から59の整数になります。frac_secs
は秒の小数部であり、.0から.999999999になります。日付と時間は1つ以上の空白で区切ります。これ以外に、書式要素の間に空白を使用できます。
ISO書式では、days
、hours
、minutes
およびseconds
は、0(ゼロ)から999999999の整数になります。frac_secs
は秒の小数部であり、.0から.999999999になります。値には空白を使用できません。T
を指定する場合は、hours
、minutes
またはseconds
の値を少なくとも1つ指定する必要があります。
オプションのDEFAULT
return_value
ON
CONVERSION
ERROR
句により、引数からINTERVAL
DAY
TO
SECOND
型への変換中にエラーが発生した場合にこのファンクションで戻される値を指定できます。引数の評価中にエラーが発生した場合、この句による影響はありません。return_value
は式またはバインド変数にすることができ、CHAR
、VARCHAR2
、NCHAR
またはNVARCHAR2
のデータ型の文字列と評価される必要があります。これは、SQL書式とISO書式のいずれかにすることができ、ファンクションの引数と同じ書式にする必要はありません。return_value
をINTERVAL
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