Oracle TO_TIMESTAMP() 函数使用指南
Oracle TO_TIMESTAMP() 是一个内置函数,它将给定的字符串参数转为一个 TIMESTAMP 类型的值。
Oracle TO_TIMESTAMP() 语法
这里是 Oracle TO_TIMESTAMP() 函数的语法:
TO_TIMESTAMP(str [ DEFAULT return_value ON CONVERSION ERROR ]
[, fmt [, 'nlsparam' ] ])
参数
str-
必需的。需要转换的字符串。它可以是任何求值为
CHAR、VARCHAR2、NCHAR或NVARCHAR2数据类型的字符字符串表达式。 DEFAULT return_value ON CONVERSION ERROR-
可选的。它允许您指定在转换发生错误时返回的值。请注意,
return_value的数据类型与str参数相同,并且按照正确的格式给出。 fmt-
可选的。它指示了
str参数的格式。如果省略fmt,则str必须采用TIMESTAMP数据类型的默认格式。 'nlsparam'-
可选的。您可以使用这个
'NLS_DATE_LANGUAGE = language'形式设置此参数,其中language是语言名称。
返回值
Oracle TO_TIMESTAMP() 函数返回一个 TIMESTAMP 类型的值,它从给定的字符串参数转换而来。
如果任意一个参数为 NULL, TO_TIMESTAMP() 将返回 NULL。
Oracle TO_TIMESTAMP() 示例
这里有几个展示了 Oracle TO_TIMESTAMP() 函数用法的示例。
基本用法
以下将字符串 '2023-02-14 10:11:12.123' 转为时间戳值:
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SSXFF';
SELECT
TO_TIMESTAMP('2023-02-14 10:11:12.123') Result
FROM dual;
输出:
RESULT
________________________________
2023-02-14 10:11:12.123000000默认格式由 NLS_TIMESTAMP_FORMAT 参数决定,您可以使用下面的语句修改 TIMESTAMP 类型的默认格式。
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SSXFF';
格式
Oracle TO_TIMESTAMP() 函数允许您指定一个字符串使用的格式。这个语句等效于上面的语句:
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SSXFF';
SELECT
TO_TIMESTAMP(
'2023-02-14 10:11:12.123',
'YYYY-MM-DD HH:MI:SS.FF'
) Result
FROM dual;
输出:
RESULT
________________________________
2023-02-14 10:11:12.123000000下面是一个使用其他格式的示例:
SELECT
TO_TIMESTAMP(
'14-Feb-2012 10:11:12.123',
'DD-Mon-RRRR HH24:MI:SS.FF'
) Result
FROM dual;
输出:
RESULT
________________________________
2012-02-14 10:11:12.123000000处理错误
Oracle TO_TIMESTAMP() 函数允许您指定一个当发生转换错误时使用的默认值。
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SSXFF';
SELECT
TO_TIMESTAMP(
'2025-02-14T10:11:12.123'
DEFAULT '2023-02-14 10:11:12.123' ON CONVERSION ERROR
) Result
FROM dual;
输出:
RESULT
________________________________
2023-02-14 10:11:12.123000000在本示例中,因为 '2025-02-14T10:11:12.123' 不符合默认的格式,因此发生了转换错误,最后,TO_TIMESTAMP() 返回了默认的值。
NULL 参数
如果任意一个参数为 NULL, TO_TIMESTAMP() 将返回 NULL。
SET NULL 'NULL';
SELECT
TO_TIMESTAMP(NULL) ,
TO_TIMESTAMP(NULL, NULL)
FROM dual;
输出:
TO_TIMESTAMP(NULL) TO_TIMESTAMP(NULL,NULL)
________________________ _____________________________
NULL NULL在本示例中,我们使用 SET NULL 'NULL'; 语句将 NULL 值显示为 'NULL' 字符串。
结论
Oracle TO_TIMESTAMP() 是一个内置函数,它将给定的字符串参数转为一个 TIMESTAMP 类型的值。