Oracle TZ_OFFSET() 函数使用指南

Oracle TZ_OFFSET() 是一个内置函数,它根据语句的执行日期返回与参数对应的时区偏移量。

Oracle TZ_OFFSET() 语法

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

TZ_OFFSET(tz)

参数

tz

必需的。它可以时区区域名称,相对于 UTC 的时区偏移,或关键字 SESSIONTIMEZONEDBTIMEZONE

返回值

Oracle TZ_OFFSET() 函数返回参数对应的时区偏移量。

如果任意一个参数为 NULLTZ_OFFSET() 将返回 NULL

Oracle TZ_OFFSET() 示例

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

时区名称

Oracle TZ_OFFSET() 函数允许您使用时区区域名称以获取其对应的时区偏移量。

SELECT
    TZ_OFFSET('Europe/Astrakhan') "Europe/Astrakhan",
    TZ_OFFSET('Asia/Shanghai') "Asia/Shanghai",
    TZ_OFFSET('Pacific/Kosrae') "Pacific/Kosrae"
FROM dual;

输出:

Europe/Astrakhan    Asia/Shanghai    Pacific/Kosrae
___________________ ________________ _________________
+04:00              +08:00           +11:00

您可以使用下面的语句获取更多的时区名称:

SELECT
    TZNAME
FROM v$timezone_names;

时区偏移量

如果您提供一个时区偏移量,Oracle TZ_OFFSET() 函数将直接返回此参数:

SELECT
    TZ_OFFSET('+04:00') "+04:00",
    TZ_OFFSET('-04:00') "-04:00"
FROM dual;

输出:

+04:00    -04:00
_________ _________
+04:00    -04:00

SESSIONTIMEZONE

您可以使用关键字 SESSIONTIMEZONE 以让 Oracle TZ_OFFSET() 函数返回会话时区的时区偏移量:

SELECT
    TZ_OFFSET(SESSIONTIMEZONE) SESSIONTIMEZONE
FROM dual;

输出:

SESSIONTIMEZONE
__________________
+08:00

DBTIMEZONE

您可以使用关键字 DBTIMEZONE 以让 Oracle TZ_OFFSET() 函数返回服务器时区的时区偏移量:

SELECT
    TZ_OFFSET(DBTIMEZONE) DBTIMEZONE
FROM dual;

输出:

DBTIMEZONE
_____________
+00:00

NULL 参数

如果任意一个参数为 NULLTZ_OFFSET() 将返回 NULL

SET NULL 'NULL';
SELECT
    TZ_OFFSET(NULL)
FROM dual;

输出:

TZ_OFFSET(NULL)
__________________
NULL

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

结论

Oracle TZ_OFFSET() 是一个内置函数,它根据语句的执行日期返回与参数对应的时区偏移量。