将带有时区的日期转换为GMT

时间:2014-01-27 18:34:13

标签: sql oracle datetime oracle11g timezone

我有一个时间日期(例如2014年3月21日08:00:00)和时区(“例如美国/丹佛”),我想将此日期转换为GMT;我怎么能这样做?

我也想知道Oracle是否需要DST?它会自动处理吗?所有时区都支持相同的方式吗?

注意:“from timezone”会在每种情况下发生变化;所以,它并不总是美国/丹佛

1 个答案:

答案 0 :(得分:0)

以下是您可以使用的功能列表:

BEGIN
    DBMS_OUTPUT.PUT_LINE('Timestamp: ' || TO_TIMESTAMP('2014-03-21 08:00:00', 'yyyy-mm-dd hh24:mi:ss') );
    DBMS_OUTPUT.PUT_LINE('Timestamp with timezone: ' || FROM_TZ(TO_TIMESTAMP('2014-03-21 08:00:00', 'yyyy-mm-dd hh24:mi:ss'), 'America/Denver') );
    DBMS_OUTPUT.PUT_LINE('Timestamp at UTC: ' || FROM_TZ(TO_TIMESTAMP('2014-03-21 08:00:00', 'yyyy-mm-dd hh24:mi:ss'), 'America/Denver') AT TIME ZONE 'UTC' );
END;

Timestamp:               2014-03-21 08:00:00.000000000
Timestamp with timezone: 2014-03-21 08:00:00.000000000 -06:00
Timestamp at UTC:        2014-03-21 14:00:00.000000000 +00:00

像“美国/丹佛”这样的长时区名称会考虑使用DST。如果指定时区通用,如“-07:00”,则不考虑DST。