2013-10-16 102 views
2

以下为什么不包括在to_char()中的夏令时?我如何获得夏令时的时间?oracle to_char夏令时

SELECT systimestamp AT TIME ZONE 'Australia/Adelaide' from dual; 
SELECT TO_CHAR(systimestamp AT TIME ZONE 'Australia/Adelaide' ,'yyyy-MM-dd HH:MI:SS AM') from dual; 

returns 

16-OCT-13 07.19.01.165681000 PM AUSTRALIA/ADELAIDE 
2013-10-16 06:19:01 PM 

回答

2
select to_char(systimestamp at time zone 'AUSTRALIA/ADELAIDE', 
'HH24:MI:SS TZR TZD') from dual 

http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm#i34510

+0

仍然返回的时间不包括夏令时。它比在时区'澳大利亚/阿德莱德' – user503647

+0

@ user503647与系统时间戳相比少了一个小时,对我来说看起来还行,比较[sqlfiddle demo](http://www.sqlfiddle.com/#!4/d41d8/18718 )到[此时钟](http://wwp.greenwichmeantime.com/time-zone/australia/south-australia/adelaide/) –

+0

你是对的。 sqlfiddle(oracle 11g R2)在夏令时返回正确的时间。我正在运行它在oracle sql开发者对抗oracle 10g(10.2.0.4)数据库。我是否缺少任何数据库配置? – user503647

1

的问题是因为在Oracle服务器过时的时区文件。阿德莱德时区在2008年或2007年左右更新。一旦时区文件更新问题得到解决。