sql >> Databasteknik >  >> RDS >> Oracle

Hur man uppdaterar en TIMESTAMP-kolumn till TIMESTAMP WITH TIME ZONE i Oracle

Med en liten hjälp från @JustinCave , kom jag fram till följande lösning, som ger exakt vad jag ville:

-- Rename the old columns so we can use them as a data source *AND* so
-- we can roll back to them if necessary.
alter table OOPSIE_TABLE rename column COLUMN_A to OLD_COLUMN_A;
alter table OOPSIE_TABLE rename column COLUMN_B to OLD_COLUMN_B;
-- Define COLUMN_A and COLUMN_B to have TIME ZONE support.
alter table OOPSIE_TABLE add (
    COLUMN_A timestamp(6) with time zone,
    COLUMN_B timestamp(6) with time zone
);
-- Populate the "new" columns with the adjusted version of the old data.
update OOPSIE_TABLE set
    COLUMN_A = from_tz(OLD_COLUMN_A, 'America/New_York') at time zone 'UTC',
    COLUMN_B = from_tz(OLD_COLUMN_B, 'America/New_York') at time zone 'UTC'
;


  1. MySQL-fråga för att extrahera det första ordet från ett fält

  2. Oracle CTE Merge

  3. Kör uttalande med genväg i MySQLWorkbench

  4. Vad är det korrekta odbc-kommandot för att anropa Oracles lagrade procedur med parametrar från .Net?