2016-03-04 70 views
1

我正在优化一些函数,我需要将许多时间戳转换为UTC。我的需求是创建一个列,如下所示:Oracle函数(如TZ_Offset和FROM_TZ)从哪里获取数据?

YEAR | TZ_NAME |夏令时开始|夏令时结束

我可以很容易地使用oracle中的from_tz函数转换时间戳,但是按照时间戳运行它不是一个选项。有谁知道oracle功能是如何工作的?我找不到任何详细说明oracle遵守这些夏令时规则的文档。

有什么建议吗?

谢谢!

+1

看看这边:http://www.iana.org/time-zones Oracle使用相同的源代码。 –

回答

2

时区相关的信息存储在一个文件中,按:https://docs.oracle.com/cd/B19306_01/server.102/b14225/ch4datetime.htm#i1006667

Oracle的时区文件包含有效的时区名。还包括针对每个时区的 以下信息:

•从协调世界时(UTC)

•转换时间为夏令时

•缩写为标准时间和夏令时

偏移
+0

我想这个效果和我一样好..我希望有一个秘密观点,Oracle可能会在这个文件的基础上提供更多的可见性。感谢您提供该链接。 – ddevlin1

+1

不幸的是,我不能找到(我查询dba_views以查看名称中是否有TIME%ZONE的任何内容,但只有v $ timezone_file和v $ timezone_names在那里),这两者都没有您要的信息。 – Boneist

+1

请注意,夏令时和时区并不像大多数人所想的那样稳定。例如,看看[新加坡标准时间](https://en.wikipedia.org/wiki/Singapore_Standard_Time)或[马来西亚时间](https://en.wikipedia.org/wiki/Time_in_Malaysia),在80年来他们改变了他们的时区6次! –