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"