Создание и заполнение нового столбца ...
SQL> alter table t23
2 add new_col timestamp(3) with time zone
3 /
Table altered.
SQL> update t23
2 set new_col = col3
3 /
7 rows updated.
SQL> select to_char(new_col,'DD-MON-YYYY HH24:MI:SS.FF3 TZR') new_col
2 from t23
3 /
NEW_COL
----------------------------
22-MAR-2010 03:20:58.000 PST
21-MAR-2010 03:20:58.000 PST
20-MAR-2010 03:20:58.000 PST
19-MAR-2010 03:20:58.000 PST
18-MAR-2010 03:20:58.000 PST
17-MAR-2010 03:20:58.000 PST
16-MAR-2010 03:20:58.000 PST
7 rows selected.
SQL>
Итак, теперь, чтобы установить значения COL3 в полдень по Гринвичу или по Гринвичу, как мы, британцы (и Oracle) знаем это:*
Давайте посмотрим на результат:
SQL> alter session set time_zone = 'PST'
2 /
Session altered.
SQL> select to_char(new_col,'DD-MON-YYYY HH24:MI:SS.FF3 TZR') as orig_val
2 , to_char(col3,'DD-MON-YYYY HH24:MI:SS.FF3 TZR') as upd_val
3 from t23
4 /
ORIG_VAL UPD_VAL
---------------------------- ----------------------------
22-MAR-2010 03:20:58.000 PST 22-MAR-2010 12:00:00.000 GMT
21-MAR-2010 03:20:58.000 PST 21-MAR-2010 12:00:00.000 GMT
20-MAR-2010 03:20:58.000 PST 20-MAR-2010 12:00:00.000 GMT
19-MAR-2010 03:20:58.000 PST 19-MAR-2010 12:00:00.000 GMT
18-MAR-2010 03:20:58.000 PST 18-MAR-2010 12:00:00.000 GMT
17-MAR-2010 03:20:58.000 PST 17-MAR-2010 12:00:00.000 GMT
16-MAR-2010 03:20:58.000 PST 16-MAR-2010 12:00:00.000 GMT
7 rows selected.
SQL>
Осталось только удалить столбец резервной копии ...
SQL> alter table t23 drop column new_col
2 /
Table altered.
SQL>
Хотя, если это большая таблица, выможет предпочесть установить его на UNUSED, а затем отбросить в медленное время.