首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >甲骨文如何在内部用时区存储时间戳

甲骨文如何在内部用时区存储时间戳
EN

Stack Overflow用户
提问于 2014-04-26 09:40:18
回答 2查看 2K关注 0票数 5

它以Oracle文档为基础,在内部存储时间戳的不同部分。我读了这篇文章http://www.orafaq.com/wiki/Timestamp,它解释了时间戳内部格式的算法。所以我做了一个简单的测试来验证它。

代码语言:javascript
复制
 SQL> create table tz_test(id number, tz timestamp with time zone);

 Table created.

 SQL> insert into tz_test values(1, timestamp '1999-10-29 21:00:00 -7:00');

 1 row created.

 SQL> insert into tz_test values(2, timestamp '1999-10-29 21:00:00 US/Pacific');

 1 row created.

 SQL> select id, dump(tz, 10) from tz_test where tz=timestamp '1999-10-29 21:00:00 -7:00';

    ID     DUMP(TZ,10)
 --------------------------------------------------------------------------------

     1     Typ=181 Len=13: 119,199,10,30,5,1,1,0,0,0,0,13,60

     2     Typ=181 Len=13: 119,199,10,30,5,1,1,0,0,0,0,137,156

orafaq中的文章讨论了oracle如何存储时区偏移量,我的第一行测试证明了这一点。但是没有关于如何存储时区文字的内容。所以我很想知道。我还想知道甲骨文如何评估时间戳'1999-10-29 21:00:00 -7:00‘和时间戳'1999-10-29 21:00美国/太平洋’是相同的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-26 11:35:26

它们似乎是来自时区文件的区域ID,例如$ORACLE_HOME/oracore/zoneinfo/timezone_14.dat

在这个中,带时区区域的值PST8PDT的最后两个字节表示为0x830x64;它与MOS文档ID 414590.1所建议的值相匹配。

我看不到任何列出所有可能值的引用,也看不到检查时区文件的任何明显方法。它似乎没有文档化,这对于内部格式来说并不是不合理的。您可以使用相同的方法计算出您感兴趣的值,或者所有的值,但我不知道您为什么要这样做。

您可能会发现另一个有用的支持文档,340512.1,这是一个关于时间戳和时区的常见问题。

要将区域名称转换为偏移值,可以使用函数,但它使用当前日期-因此,您得到的答案将取决于您是在冬季还是夏季询问。要获得某个日期的偏移量,需要将该时间戳与UTC时间戳进行比较。你不能真的走另一条路,因为多个时区区域映射相同的偏移量。

票数 3
EN

Stack Overflow用户

发布于 2015-11-16 14:35:39

TIMESTAMP '1999-10-29 21:00:00 -7:00'TIMESTAMP'1999-10-29 21:00:00 US/Pacific'而不是

在运行此查询时,您可以看到不同之处,例如:

代码语言:javascript
复制
SELECT 
    TIMESTAMP '1999-12-29 21:00:00 -7:00', 
    TIMESTAMP '1999-12-29 21:00:00 US/Pacific',
    TIMESTAMP '1999-06-29 21:00:00 -7:00', 
    TIMESTAMP '1999-06-29 21:00:00 US/Pacific'
FROM dual;

29.12.1999 21:00:00.000000000 -07:00    
29.12.1999 21:00:00.000000000 -08:00    
29.06.1999 21:00:00.000000000 -07:00    
29.06.1999 21:00:00.000000000 -07:00

US/Pacific认为日光节约时间,-7:00不!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23309100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档