Oracle FROM_TZ() 函数使用指南

Oracle FROM_TZ() 是一个内置函数,它将一个时间戳值和时区值转换为一个带有时区的时间戳值。

Oracle FROM_TZ() 语法

这里是 Oracle FROM_TZ() 函数的语法:

FROM_TZ(timestamp_value, time_zone_value)

参数

timestamp_value

必需的。

time_zone_value

必需的。它是一个 'TZH:TZM' 格式的字符串或者一个返回带有 TZDTZR 格式字符串的表达式。

返回值

Oracle FROM_TZ() 函数返回一个带有时区的时间戳值。

Oracle FROM_TZ() 示例

这里有几个展示了 Oracle FROM_TZ() 函数用法的示例。

基本用法

ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT = 'YYYY-MM-DD HH24:MI:SSXFF TZR';
SELECT
    FROM_TZ(TIMESTAMP '2023-02-11 12:13:14', '+09:00') Result
FROM dual;

输出:

RESULT
_______________________________________
2023-02-11 12:13:14.000000000 +09:00

这里,我们使用 ALTER SESSION 语句修改当前会话的日期显式格式

NULL 参数

你不能为第一个参数提供一个 NULL 值, 否则 Oracle 将报告一个错误。

SET NULL 'NULL';
SELECT
    FROM_TZ(NULL, NULL)
FROM dual;

输出:

SQL Error: ORA-00932: inconsistent datatypes: expected TIMESTAMP got CHAR

如果你为第二个参数提供一个 NULL 值, FROM_TZ() 将返回 NULL

SET NULL 'NULL';
SELECT
    FROM_TZ(TIMESTAMP '2023-02-11 12:13:14', NULL)
FROM dual;

输出:

FROM_TZ(TIMESTAMP'2023-02-1112:13:14',NULL)
______________________________________________
NULL

在本示例中,我们使用 SET NULL 'NULL'; 语句将 NULL 值显示为 'NULL' 字符串。

结论

Oracle FROM_TZ() 是一个内置函数,它将一个时间戳值和时区值转换为一个带有时区的时间戳值。