在Oracle中更改TIMESTAMP WITH TIMEZONE的时区组件

Han*_*Gay 5 oracle ddl timezone timestamp timestamp-with-timezone

我有一些数据存储在TIMESTAMP(6) WITH TIMEZONEOracle的一列中,但它存储在错误的时区.按照惯例,数据库中的所有时间戳必须以UTC格式存储,但此数据不正确地保留为EDT.实际值等于正确的UTC值; 问题只是它被存储为19-JUN-12 12.20.42.000000000 PM AMERICA/NEW_YORK应该存在的时间19-JUN-12 16.20.42.000000000 PM UTC.Oracle 有什么方法可以改变这个吗?

Jus*_*ave 8

您真的需要更改存储在数据库中的数据吗?通常,仅仅转换到不同的时区进行显示就足够了,即

SELECT <<your_timestamp_column>> AT TIME ZONE 'UTC'
  FROM <<your table>>
Run Code Online (Sandbox Code Playgroud)

当然,如果你愿意,你也可以

UPDATE <<your table>>
   SET <<your timestamp column>> = <<your timestamp column>> AT TIME ZONE 'UTC'
Run Code Online (Sandbox Code Playgroud)

改变所有数据.