Oracle TO_YMINTERVAL() 函数使用指南
Oracle TO_YMINTERVAL()
是一个内置函数,它将给定的字符串参数转为一个 INTERVAL MONTH TO YEAR
类型的值。
Oracle TO_YMINTERVAL()
语法
这里是 Oracle TO_YMINTERVAL()
函数的语法:
TO_YMINTERVAL(str, [ DEFAULT return_value ON CONVERSION ERROR ])
参数
str
-
必需的。它可以是指定计算结果为
CHAR
、VARCHAR2
、NCHAR
或NVARCHAR2
数据类型的字符串的任何表达式。您可以使用两种格式的其中一种:-
与 SQL 标准 (ISO/IEC 9075) 兼容的 SQL 间隔格式:
[+|-] years - months
。其中,years
是 0 到 999999999 之间的整数,months
是 0 到 11 之间的整数。在元素之间允许一个或多个额外的空格。 -
与 ISO 8601:2004 标准兼容的 ISO 持续时间格式:
[-]P[yearsY] [monthsM][[daysD][T[hours H][minutes M][seconds[.frac_secs]S]]
。其中,minutes
和seconds
是介于 0 和 999999999 之间的整数。days
、hours
、minutes
、seconds
和frac_secs
是非负整数并且被忽略。值中不允许有空格。如果指定T
,则必须至少指定hours
、minutes
或seconds
中的一个。
-
DEFAULT return_value ON CONVERSION ERROR
-
可选的。它允许您指定在转换发生错误时返回的值。
返回值
Oracle TO_YMINTERVAL()
函数返回一个 INTERVAL MONTH TO YEAR
类型的值。
如果任意一个参数为 NULL
, TO_YMINTERVAL()
将返回 NULL
。
Oracle TO_YMINTERVAL()
示例
这里有几个展示了 Oracle TO_YMINTERVAL()
函数用法的示例。
SQL 格式
本示例使用 SQL 格式传入一个区间值:
SELECT
TO_YMINTERVAL('100 - 10') "Result1",
TO_YMINTERVAL('+100 - 10') "Result2",
TO_YMINTERVAL('-100 - 10') "Result3"
FROM dual;
输出:
Result1 Result2 Result3
__________ __________ __________
+100-10 +100-10 -100-10
ISO 格式
本示例使用 ISO 格式传入一个区间值:
SELECT
TO_YMINTERVAL('P100Y10M') "Result1",
TO_YMINTERVAL('-P100Y10M') "Result2",
TO_YMINTERVAL('P100Y10M100DT10H11M12.123S') "Result3"
FROM dual;
输出:
Result1 Result2 Result3
__________ __________ __________
+100-10 -100-10 +100-10
错误
如果您提供了一个错误的格式, Oracle TO_YMINTERVAL()
函数将报告一个错误:
SELECT
TO_YMINTERVAL('+P100Y10M')
FROM dual;
输出:
SQL Error: ORA-01867: the interval is invalid
01867. 00000 - "the interval is invalid"
*Cause: The character string you specified is not a valid interval.
*Action: Please specify a valid interval.
在本示例中,由于 IOS 格式不支持 +
符号,因此 Oracle 报告了一个错误。
Oracle TO_YMINTERVAL()
函数允许您指定一个默认值以应对转换出错:
SELECT
TO_YMINTERVAL(
'+P100Y10M'
DEFAULT 'P100Y10M' ON CONVERSION ERROR
) "Result"
FROM dual;
输出:
Result
__________
+100-10
NULL 参数
如果任意一个参数为 NULL
, TO_YMINTERVAL()
将返回 NULL
。
SET NULL 'NULL';
SELECT
TO_YMINTERVAL(NULL)
FROM dual;
输出:
TO_YMINTERVAL(NULL)
______________________
NULL
在本示例中,我们使用 SET NULL 'NULL';
语句将 NULL
值显示为 'NULL'
字符串。
结论
Oracle TO_YMINTERVAL()
是一个内置函数,它将给定的字符串参数转为一个 INTERVAL MONTH TO YEAR
类型的值。