從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