残念ながら、TIMESTAMP(6)
の代わりに誤って定義された列のペアがありますTIMESTAMP(6) WITH TIME ZONE
。これらの列を古い間違ったデータ型から新しい正しいデータ型に移行したいと思います。その上、値はE(S | D)Tでキャプチャされているように見え、UTCでの値が必要です。
これまでのところ、私が持っている最高のものは次のとおりです。
alter table OOPSIE_TABLE add (
NEW_COLUMN_A timestamp(6) with time zone,
NEW_COLUMN_B timestamp(6) with time zone
);
update OOPSIE_TABLE set
NEW_COLUMN_A = COLUMN_A,
NEW_COLUMN_B = COLUMN_B
;
alter table OOPSIE_TABLE drop column (
COLUMN_A,
COLUMN_B
);
alter table OOPSIE_TABLE rename column NEW_COLUMN_A to COLUMN_A;
alter table OOPSIE_TABLE rename column NEW_COLUMN_B to COLUMN_B;
15-JUN-12 05.46.29.600102000 PM -04:00
残念ながら、それは私が望むときに、のように見えるデータを私に残します15-JUN-12 09.46.29.600102000 PM UTC
(またはOracleがそれをフォーマットします)。
やったのですが、select dbtimezone from dual;
表示されて+00:00
いるので、どうすればいいのかわかりません。理想的には、これを純粋なDMLで実行し、古い日付値(America / New_Yorkタイムゾーンにあると確信しています)に基づいてDSTを考慮に入れることができます。