Oracle Databaseでは、TO_YMINTERVAL() 関数は、引数をINTERVAL MONTH TO YEARの値に変換します データ型。
構文
構文は次のようになります:
TO_YMINTERVAL
( ' { [+|-] years - months
| ym_iso_format
} '
[ DEFAULT return_value ON CONVERSION ERROR ]
) SQL形式またはISO形式で引数を渡すオプションがあります。
違いは次のとおりです:
-
sql_formatSQL標準(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"