Oracle数据库和时区

时间:2015-06-09 13:55:26

标签: oracle timezone

我正在使用oracle数据库。 每个表都有一个creationdate和lastmodified字段。 lastmodified是时区的实际时间(UTC + 1 +夏令时,如果需要),而creationdate是同一时间,但在UTC + 0,夏天时间相差2小时,否则相差1小时。 有没有办法改变创建日期,以便在需要时使用utc + 1 +夏令时?感谢

1 个答案:

答案 0 :(得分:0)

你可以使用这个:

ALTER SESSION SET TIME_ZONE = 'Europe/Zurich';
SELECT 
    TO_TIMESTAMP_TZ(TO_CHAR(creationdate,'yyyymmddhh24miss"UTC"'), 'yyyymmddhh24missTZR') AT LOCAL AS creationdate_local_TIMESTAMP,
    CAST(TO_TIMESTAMP_TZ(TO_CHAR(creationdate,'yyyymmddhh24miss"UTC"'), 'yyyymmddhh24missTZR') AT LOCAL AS DATE) AS creationdate_local_DATE  
FROM your_table;

您必须将会话时区设置为上述区域。如果您使用静态值(例如ALTER SESSION SET TIME_ZONE = '+02:00';),它将无法正常工作。

重要提示:如果您使用转换后的时间值更新表格,则必须确保不要多次执行此操作,因为每次更新您的时间会一次又一次地移动1或2小时。< / p>