将 windows 个时区映射到 Oracle 时区
Map windows time zones to Oracle time zones
我有一个使用 GetTimeZoneInformation 读取 PC 时区信息的应用程序。然后,当我建立与 Oracle 的连接时,我需要 'alter session set time_zone = <time_zone>'。如果我只使用偏移量,oracle 将忽略夏令时设置,因此我需要指定时区名称。然而,oracle 在 v$timezone_names table 中有超过 2000 条记录,其中 none 通过 tzutil 或 GetTimeZoneInformation 匹配时区 Windows returns。有什么办法可以将时区 windows returns 转换为 oracle 中的相应时区,考虑到我需要保留夏令时设置。
实际上那是不可能的。 Oracle 使用 IANA Time zone 数据库。尝试 tzutil /l
获取具有替代名称的所有时区列表。
或者看看How to translate between Windows and IANA time zones?
注意,除了 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
我有一个使用 GetTimeZoneInformation 读取 PC 时区信息的应用程序。然后,当我建立与 Oracle 的连接时,我需要 'alter session set time_zone = <time_zone>'。如果我只使用偏移量,oracle 将忽略夏令时设置,因此我需要指定时区名称。然而,oracle 在 v$timezone_names table 中有超过 2000 条记录,其中 none 通过 tzutil 或 GetTimeZoneInformation 匹配时区 Windows returns。有什么办法可以将时区 windows returns 转换为 oracle 中的相应时区,考虑到我需要保留夏令时设置。
实际上那是不可能的。 Oracle 使用 IANA Time zone 数据库。尝试 tzutil /l
获取具有替代名称的所有时区列表。
或者看看How to translate between Windows and IANA time zones?
注意,除了 ALTER SESSION SET TIME_ZONE = ...
,您还可以通过环境变量 ORA_SDTZ
或在注册表中
HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_<Oracle Home>\ORA_SDTZ
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Oracle\KEY_<Oracle Home>_32bit\ORA_SDTZ