首页 > 解决方案 > 将 windows 时区映射到 Oracle 时区

问题描述

我有一个使用 GetTimeZoneInformation 读取 PC 时区信息的应用程序。然后,当我建立与 Oracle 的连接时,我需要“更改会话设置 time_zone = <time_zone>”。如果我只使用偏移量,oracle 将忽略夏令时设置,所以我需要指定时区名称。然而,oracle 在 v$timezone_names 表中有超过 2000 条记录,它们都不匹配 Windows 通过 tzutil 或 GetTimeZoneInformation 返回的时区。考虑到我需要保留夏令时设置,有什么方法可以将时区窗口转换为 oracle 中的相应时区。

标签: windowsoraclewinapitimezone

解决方案


实际上这是不可能的。Oracle 使用IANA 时区数据库。尝试tzutil /l获取具有替代名称的所有时区列表。

或者看看如何在 Windows 和 IANA 时区之间进行转换?

注意,ALTER SESSION SET TIME_ZONE = ...您也可以通过环境变量ORA_SDTZ或在您的注册表中预设 Oracle 会话时区,而不是

HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_<Oracle Home>\ORA_SDTZ
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Oracle\KEY_<Oracle Home>_32bit\ORA_SDTZ

推荐阅读