时区和夏令时

DATE 数据类型不处理时区或夏令时变化。

或者:

DATE 可以存储为协调世界时(UTC)并转换为当前会话时区,如下所示:

SELECT FROM_TZ(
         CAST(
           TO_DATE( '2016-01-01 12:00:00', 'YYYY-MM-DD HH24:MI:SS' )
           AS TIMESTAMP
         ),
         'UTC'
       )
       AT LOCAL AS time
FROM   DUAL;

如果你运行 ALTER SESSION SET TIME_ZONE = '+01:00';,那么输出是:

TIME2016-01-01 13:00:00.000000000 +01:00

ALTER SESSION SET TIME_ZONE = 'PST'; 然后输出是:

TIME2016-01-01 04:00:00.000000000 PST