2013-10-16 100 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年左右更新。一旦時區文件更新問題得到解決。