Oracle 时区(TimeZone )-- DUMP信息

 从DUMP信息构造时间

建立表,包含不同类型的三个column

create table tstz(ts timestamp, tstz timestamp with time zone, tsltz timestamp with local time zone);

insertinto tstz values(systimestamp,systimestamp,systimestamp);

commit;


SQL> select t.tstz,dump(t.tstz), dump(t.tstz,16) from tstz t;  --显示结果格式进行了重新排版

--------------------------------------------------------------------------------------------------

TSTZ                           2008/03/29 10:14:10.774754 +08:00                                                         

--------------------------------------------------------------------------------------------------

DUMP(T.TSTZ)              Typ=181 Len=13: 120,108,3,29,3,15,11,46,45,206,208,28,60                                   

--------------------------------------------------------------------------------------------------

DUMP(T.TSTZ,16)         Typ=181 Len=13: 78,6c,3,1d,3,f,b,2e,2d,ce,d0,1c,3c

                                         

  各部分的解析结果是

120,108年分,减 100得到20 08

3,29日期,直接得 到03-29

3,15,11时间,减1得 到 02:14:10 , 这里是GMT的时间,所以还要加上时区部分

2e,2d,ce,d0 Fractional Seconds部分,用HEX进行运算  to_number('2e2dced0','xxxxxxxx') =  774754000

1c时区小时部 分,0时区用0x14表示, 所以0x1C 表示 0x1C - 0x14 = 0x08,是+8

3c时区分钟部 分,60分用0x3C表示, 西半区和东半区分别是0x1E和0x5A

 换算的结果是 2008-03-29 02:14:10  774754000 +00:00,换成+08:00就是 2008-03-29 10:14:10  774754000 +08:00

posted on 2012-02-10 14:46  wait4friend  阅读(787)  评论(0编辑  收藏  举报