我有以下查询。它返回不同地区的当前时间。它适用于表V @ timezone_names中的大多数区域。但是此查询返回错误的结果:
我的查询是:
select CAST(FROM_TZ( CAST(current_date AS TIMESTAMP)
, sessiontimezone)
AT TIME ZONE 'America/Caracas' AS DATE)
from dual;
您可以在不同的国家/地区here查看当前时间。
答案 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提出服务请求以使其得到修复。