Oracle Databaseでは、TO_DSINTERVAL()
関数は、引数をINTERVAL DAY TO SECOND
の値に変換します データ型。
構文
構文は次のようになります:
TO_DSINTERVAL ( ' { sql_format | ds_iso_format } '
[ DEFAULT return_value ON CONVERSION ERROR ] )
したがって、SQL形式またはISO形式で引数を渡すオプションがあります。
違いは次のとおりです:
-
sql_format
SQL標準(ISO / IEC 9075)と互換性のあるSQL間隔形式です。 -
ds_iso_format
は、ISO 8601:2004標準と互換性のあるISO期間形式です。
sql_format
の構文 このようになります:
[+ | -] days hours : minutes : seconds [. frac_secs ]
場所:
days
0から999999999までの整数ですhours
0から23までの整数ですminutes
およびseconds
0から59までの整数です-
frac_secs
.0と.999999999の間の秒の小数部分です。 - 1つ以上の空白で、日と時間を区切ります。フォーマット要素の間に追加のブランクを使用できます。
そして、ds_iso_format
の構文 :
[-] P [days D]
[T [hours H] [minutes M] [seconds [. frac_secs] S ] ]
場所:
days
、hours
、minutes
およびseconds
0から999999999までの整数です。-
frac_secs
.0と.999999999の間の秒の小数部分です。 - 値に空白を含めることはできません。
-
T
を指定した場合 、次に、hours
の少なくとも1つを指定する必要があります 、minutes
、またはseconds
値。
例
実例をいくつか示します。
SQL形式
ここでは、SQL形式で引数を渡します:
SELECT TO_DSINTERVAL('135 08:35:47.123456789')
FROM DUAL;
結果:
+135 08:35:47.123456789
必要に応じて、記号を前に付けることができます。ネガティブに変えましょう:
SELECT TO_DSINTERVAL('-135 08:35:47.123456789')
FROM DUAL;
結果:
-135 08:35:47.123456789
ISO形式
この例では、同じ値をISO形式で渡します:
SELECT TO_DSINTERVAL('P135DT08H35M47.123456789S')
FROM DUAL;
結果:
+135 08:35:47.123456789
ここに負の値があります:
SELECT TO_DSINTERVAL('-P135DT08H35M47.123456789S')
FROM DUAL;
結果:
-135 08:35:47.123456789
変換エラー時にデフォルト値を提供する
引数をINTERVAL DAY TO SECOND
に変換中にエラーが発生した場合に、値を返すオプションもあります。 タイプ。
例:
SELECT
TO_DSINTERVAL(
'Oops!'
DEFAULT '00 00:00:00' ON CONVERSION ERROR
)
FROM DUAL;
結果:
+00 00:00:00.000000
ヌル引数
null
を渡す 結果はnull
:
SET NULL 'null';
SELECT
TO_DSINTERVAL(null)
FROM DUAL;
結果:
null
デフォルトでは、SQLclおよびSQL * Plusは、null
の場合は常に空白を返します。 SQL SELECT
の結果として発生します 声明。
ただし、SET NULL
は使用できます 返される別の文字列を指定します。ここでは、文字列null
を指定しました 返却する必要があります。
無効な引数カウント
引数を渡さずに関数を呼び出すと、エラーが発生します:
SELECT TO_DSINTERVAL()
FROM DUAL;
結果:
Error starting at line : 1 in command - SELECT TO_DSINTERVAL() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
そして、あまりにも多くの引数を渡すと、エラーが発生します:
SELECT TO_DSINTERVAL('P135D', 'P135D')
FROM DUAL;
結果:
Error starting at line : 1 in command - SELECT TO_DSINTERVAL('P135D', 'P135D') FROM DUAL Error report - ORA-12702: invalid NLS parameter string used in SQL function