2014-10-01 103 views
0

我有日期(01-oct-2014),時間(00:37:31),格林尼治標準時差(-360) 我想獲得召集到CST的時間。解決方案可以在javascript 或oracle數據庫中。時區轉換爲CST格林尼治標準時間偏移

我已看過一些文章,但could'nt得到任何where..can有人幫我這個...

+0

那麼Java與它有什麼關係呢?那是當地時間還是UTC?我懷疑你實際上不希望CST,但中央時間 - 目前是CDT。 – 2014-10-01 05:58:18

+0

那麼你有在數據庫中的日期列包含日期和時間?或者你是否有TIMESTAMP帶或不帶時區?如果您有DATE列(沒有時區信息),並且您知道「來自」時區,請查看我的博客帖子:http://dspsd.blogspot.dk/2012/02/date-and-dst .html - 有一個函數date_tz_convert()可以轉換爲例如'US/Central'(這可能比CST或CDT更好,因爲它是夏時制的意識:-) – 2014-10-01 13:12:10

+0

@Kim - 是的,但最好使用' 「美國/芝加哥」,而不是「美國/中環」 - 這是一個向後兼容的鏈接。 – 2014-10-01 15:58:27

回答

0

在Oracle中,你的本地時間轉換到另一個時區的時間,你需要CAST TIMESTAMP WITH TIMEZONE

例如,我想轉換「IST」印度標準時間,也就是我的本地時區爲「CST」,即中央:

SQL> WITH T AS 
    2 (SELECT to_timestamp('10/01/2014 11','mm/dd/yyyy hh24') ist FROM dual 
    3 ) 
    4 SELECT ist, 
    5 CAST(CAST(ist AS TIMESTAMP WITH TIME ZONE) at TIME zone 'CST' AS TIMESTAMP) cst 
    6 FROM t 
    7/

IST         CST 
----------------------------------- ------------------------------ 
01-OCT-14 11.00.00.000000000 AM  01-OCT-14 12.30.00.000000 AM 

Daylight saving照顧。您可能必須小心瞭解CSTCDT

+1

如果您使用像'US/Central'這樣的命名時區,它會自動從CST切換到CDT,並在春季和秋季恢復正確的日期。 – 2014-10-01 13:13:32

+0

我說要照顧**瞭解**的差異;-) – 2014-10-01 13:27:45

+0

當然是的;-)我只是想確定OP沒有誤解他認爲他需要寫'CASE當IsSummerTime(THE_DATE)THEN' CDT'ELSE'CST'END'(假設他有一個IsSummerTime()函數,這將很難編寫;-) – 2014-10-01 13:35:55

0

有幾種方法可以做到這一點:

SELECT 
    (TIMESTAMP '2014-10-01 00:37:31') AT TIME ZONE 'CST', 
    FROM_TZ((TIMESTAMP '2014-10-01 00:37:31'), 'CST'), 
    CAST((TIMESTAMP '2014-10-01 00:37:31') AT TIME ZONE 'CST' AS TIMESTAMP) 
FROM DUAL; 

這取決於如果結果應包括新的時區或沒有。

相關問題