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

OracleのTO_YMINTERVAL()関数

    Oracle Databaseでは、TO_YMINTERVAL() 関数は、引数をINTERVAL MONTH TO YEARの値に変換します データ型。

    構文

    構文は次のようになります:

    TO_YMINTERVAL
      ( '  { [+|-] years - months 
           | ym_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形式では、years は0〜999999999の整数で、months は0から11までの整数です。フォーマット要素の間に追加のブランクを使用できます。

    ISO形式(以下の構文)では、年と月は0〜999999999の整数です。日、hours minutes seconds 、および frac_secs 非負の整数であり、指定されている場合は無視されます。値に空白を含めることはできません。 Tを指定した場合 、次に、hoursの少なくとも1つを指定する必要があります minutes 、またはseconds 値。

    ds_iso_formatの構文 このようになります:

    [-] P [ years Y ] [months M] [days D]
      [T [hours H] [minutes M] [seconds [. frac_secs] S ] ]

    実例をいくつか示します。

    SQL形式

    ここでは、SQL形式で引数を渡します:

    SELECT TO_YMINTERVAL('1-2')
    FROM DUAL;

    結果:

    +01-02

    この場合、SQL形式で1年2ヶ月経ちました。

    必要に応じて、記号を前に付けることができます。ネガティブに変えましょう:

    SELECT TO_YMINTERVAL('-1-2')
    FROM DUAL;

    結果:

    -01-02

    ISO形式

    この例では、同じ値をISO形式で渡します:

    SELECT TO_YMINTERVAL('P1Y2M')
    FROM DUAL;

    結果:

    +01-02

    ここに負の値があります:

    SELECT TO_YMINTERVAL('-P1Y2M')
    FROM DUAL;

    結果:

    -01-02

    変換エラー時にデフォルト値を提供する

    引数をINTERVAL MONTH TO YEARに変換中にエラーが発生した場合に、値を返すオプションもあります。 タイプ。

    例:

    SELECT 
        TO_YMINTERVAL(
        '1y-02m'
        DEFAULT '00-00' ON CONVERSION ERROR
        )
    FROM DUAL;

    結果:

    +00-00

    ヌル引数

    nullを渡す 結果はnull

    SET NULL 'null';
    SELECT 
        TO_YMINTERVAL(null)
    FROM DUAL;

    結果:

    null

    デフォルトでは、SQLclおよびSQL * Plusは、nullの場合は常に空白を返します。 SQL SELECTの結果として発生します 声明。

    ただし、SET NULLは使用できます 返される別の文字列を指定します。ここでは、文字列nullを指定しました 返却する必要があります。

    無効な引数カウント

    引数を渡さずに関数を呼び出すと、エラーが発生します:

    SELECT TO_YMINTERVAL()
    FROM DUAL;

    結果:

    SQL Error: ORA-00938: not enough arguments for function
    00938. 00000 -  "not enough arguments for function

    そして、あまりにも多くの引数を渡すと、エラーが発生します:

    SELECT TO_YMINTERVAL('P1Y2M', 'P3Y5M')
    FROM DUAL;

    結果:

    SQL Error: ORA-00939: too many arguments for function
    00939. 00000 -  "too many arguments for function"

    1. GROUP BY+CASEステートメント

    2. Cos()がPostgreSQLでどのように機能するか

    3. 複数のSQLServerエージェントジョブ(T-SQL)に同じスケジュールを使用する方法

    4. SQLでストアドプロシージャを作成するにはどうすればよいですか?