我有一个时间日期(例如2014年3月21日08:00:00)和时区(“例如美国/丹佛”),我想将此日期转换为GMT;我怎么能这样做?
我也想知道Oracle是否需要DST?它会自动处理吗?所有时区都支持相同的方式吗?
注意:“from timezone”会在每种情况下发生变化;所以,它并不总是美国/丹佛
答案 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。