Oracle是否为所有地区正确管理时区?

时间:2012-09-17 08:00:24

标签: oracle oracle10g timezone timestamp-with-timezone

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

  1. '亚洲/德黑兰'与+4:30时区差异
  2. 'America / Caracas'与-4:30时区差异
  3. 我的查询是:

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

    您可以在不同的国家/地区here查看当前时间。

1 个答案:

答案 0 :(得分:6)

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

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

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

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