2013-10-15 23 views
1

在我的函數中,我想將時間從GMT轉換爲BST。 我的查詢是像下面new_time以12小時格式返回時間

SELECT TO_CHAR(NEW_TIME ((TRUNC(SYSDATE) + 20/24 + 21/1440), 
         'GMT', 
         'BST'), 
       'HH24:MI' 
     ) 
FROM DUAL; 

它返回我 '9:21',而不是'21:21' 。 請幫忙!謝謝!

回答

0

documentation,BST是指白令時標準時間,而不是你所期望的英國夏令時。 Bering Standard Time在UTC-11,所以得到的結果與預期的一樣。

NEW_TIME函數只能接受上述文檔中指定的有限時區。如果您想將GMT轉換爲英國夏令時,請使用'Europe/London'時區。

select (cast(your_date as timestamp) at time zone 'GMT') at time zone 'Europe/London' 
from dual; 

所以,你的查詢將是

SQL> select 
    (cast((TRUNC(SYSDATE) + 20/24 + 21/1440) as timestamp) at time zone 'GMT') at time zone 'Europe/London', 
    to_char((cast((TRUNC(SYSDATE) + 20/24 + 21/1440) as timestamp) at time zone 'GMT') at time zone 'Europe/London','hh24:mi') 
from dual; 

(CAST((TRUNC(SYSDATE)+20/24+21/1440)ASTIMESTAMP)ATTIMEZONE'GMT')ATTIMEZONE' TO_CH 
--------------------------------------------------------------------------- ----- 
14-MAY-14 09.21.00.000000 PM EUROPE/LONDON         21:21 
相關問題