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 阅读(797) 评论(0) 编辑 收藏 举报