日期:2014-05-17  浏览次数:20802 次

请问,这个语句相同的时区转了一下,为什么就相差1小时了?
请问,这个语句相同的时区转了一下,为什么就相差1小时了?

--这个是不对的,相同的时区转了一下,就相差1小时了,为什么?
select to_timestamp_tz('2012-11-01 00:00:00 US/Pacific', 
     'yyyy-mm-dd hh24:mi:ss tzr') at time zone 'US/Pacific' from dual;
    
返回:
31-OCT-12 11.00.00.000000000 PM US/PACIFIC

期待值应该是:01-Nov-12 00.00.00.000000000 AM US/PACIFIC

应该返回时间一致才对嘛.

另外,像这句
select to_timestamp_tz('2012-11-02 00:00:00 utc',
     'yyyy-mm-dd hh24:mi:ss tzr') at time zone 'US/Pacific' from dual;

返回: 01-NOV-12 04.00.00.000000000 PM US/PACIFIC (慢了一个小时。因为,美国夏令时结束日是2012-11-04 )

期待值应该是:01-NOV-12 05.00.00.000000000 PM US/PACIFIC


请问, 这个夏令时制动转换怎么不太准,怎么解决?谢谢!

------解决方案--------------------
测试了一下在本机运行没能重现你的问题,返回了正常结果。
------解决方案--------------------
测试一下 返回结果 01-11月-12 01.00.00.000000000 上午 US/PACIFIC
版本 10g -10.2.0.1.0
你查看一下 版本 是否一致

11gr1 测试结果
01-11? -12 12.00.00.000000000 ?? US/PACIFIC