2013-10-15 2 views
1

내 함수에서 GMT에서 BST로 시간을 변환하려고합니다. 내 쿼리는12 시간 형식의 new_time 반환 시간

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을 말하며 영국 서머 타임이 아닙니다. Bering Standard Time은 UTC-11이므로 예상대로 결과가 나옵니다.

NEW_TIME 함수는 위 문서에 지정된 제한된 시간대 만 사용할 수 있습니다. 그리니치 표준시를 영국령 서머 타임으로 변환하려면 을 사용해야합니다. '유럽/런던'시간대를 사용해야합니다.

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 
관련 문제