sql >> データベース >  >> RDS >> Oracle

OracleのTO_DSINTERVAL()関数

    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

    1. java.sql.SQLExceptionの取得:ResultSetを閉じた後の操作は許可されていません

    2. テーブル定義を表示するT-SQLクエリ?

    3. UPDATEステートメントがREFERENCE制約と競合していました-SQLServer/TSQLチュートリアルパート76

    4. カーソル廃止ダンプ