【问题标题】:Does Oracle manage timezone correctly for all regions?Oracle 是否为所有区域正确管理时区?
【发布时间】:2012-09-17 08:00:23
【问题描述】:

我有以下问题。它返回不同地区的当前时间。它适用于表 V@timezone_names 中的大多数区域。但是这个查询返回了错误的结果:

  1. “亚洲/德黑兰”,时差为 +4:30
  2. 'America/Caracas' 时区差异为 -4:30

我的查询是:

select CAST(FROM_TZ( CAST(current_date AS TIMESTAMP)
                   , sessiontimezone)
             AT TIME ZONE 'America/Caracas' AS DATE) 
  from dual;

您可以看到不同国家-城市here的当前时间。

【问题讨论】:

    标签: oracle oracle10g timezone timestamp-with-timezone


    【解决方案1】:

    Oracle 会不时发布时区文件补丁,以纠正错误以及因国家和地区更改其时区规则而引入的更改。 Oracle 支持说明 412160.1 显示了如何检查您拥有的时区文件以及如何更新。 (检查在 10g 中很简单 - SELECT version FROM v$timezone_file)。

    在 11g 时区文件版本为 14 时,加拉加斯得到 -4:30,德黑兰得到 +4:30,显示的时间与您链接到的站点相匹配。

    看起来像加拉加斯 changed its timezone 在 2007 年末,所以我猜你显示的是 -4:00;德黑兰在 2008 年有 DST 变化(或reintroduced DST,不确定),所以我猜你显示的是 +3:30。假设您当前的时区早于这些更改似乎是合理的;默认情况下,10g 将在 v3 或 v4 上。

    我建议您更新到最新的时区文件(版本 18);您需要查看该支持说明以了解如何根据您的情况执行此操作,或者更具体地说,请参阅说明 1448706.1,“为 Oracle 数据库应用 DSTv18 更新”。您可以将其作为补丁 13417321 获取。如果您在使用最新补丁时仍然发现问题,则可以向 Oracle 提出服务请求以修复它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-04
      • 2012-08-30
      • 1970-01-01
      • 2020-05-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      相关资源
      最近更新 更多