Повреждение даты Oracle во время обновления

Я переношу некоторые данные из одной схемы / таблицы Oracle в новую схему / таблицу в той же базе данных.

] Сценарий миграции делает следующее:

create table newtable as select
  ...
  cast(ACTIVITYDATE as date) as ACTIVITY_DATE,
  ...
FROM oldtable where ACTIVITYDATE > sysdate - 1000;

Если я посмотрю на исходные данные, все будет хорошо - вот одна запись:

select 
  activitydate,
  to_char(activitydate, 'MON DD,YYYY'),
  to_char(activitydate, 'DD-MON-YYYY HH24:MI:SS'),
  dump(activitydate),
  length(activitydate)
from orginaltable  where oldpk =  1067514

Результат:

18-NOV-10                 NOV 18,2010                        18-NOV-2010 12:59:15                          Typ=12 Len=7: 120,110,11,18,13,60,16  

Перенесенные данные, показывающие, что данные повреждены:

select 
  activity_date,
  to_char(activity_date, 'MON DD,YYYY'),
  to_char(activity_date, 'DD-MON-YYYY HH24:MI:SS'),
  dump(activity_date),
  length(activity_date)
from newtable
where id =  1067514

Результат :

18-NOV-10                 000 00,0000                         00-000-0000 00:00:00                           Typ=12 Len=7: 120,110,11,18,13,0,16   

Около 5000 из 350 000 записей показывают эту проблему.

Кто-нибудь может объяснить, как это произошло?

6
задан chris 11 August 2011 в 17:49
поделиться