В рамках своих должностных обязанностей я отвечаю за извлечение данных из базы данных Oracle 11g нашего поставщика и загрузку их в нашу базу данных SQL Server 2016. Я успешно делал это с SSIS и коннекторами Attunity Oracle.
Сегодня мне сообщили, что в существующую таблицу Invoices
на стороне Oracle добавлен новый столбец. Уже был столбец DATE с именем Order Date
, который содержит действительные значения даты с нулевым временем, например 2017-12-25 00:00:00
.
Новый столбец называется Order Date Time
и также является столбцом DATE. Когда я открыл пакет служб SSIS и извлек источник Oracle в своем DFT, я предварительно просмотрел данные и обнаружил, что значения в Order Date Time
равны 2432-82-75 50:08:01
. Я попытался преобразовать столбец с помощью CAST
и всех функций TO_*
, но преобразование либо не удалось сразу, либо вернуло строку нулей.
TO_CHAR("Order Date Time", 'YYYYMMDDHH24MISS')
выход 00000000000000
После небольшого поиска в Google "Недопустимое значение даты Oracle", я теперь думаю, что эти значения DATE действительно повреждены. Я что-то здесь упускаю? Есть ли какая-то особая технология, специфичная для Oracle, для хранения значений времени в столбце DATE, о которой я, возможно, не знаю?
(И да, меня немного беспокоит, что наш поставщик добавил еще один столбец DATE вместо того, чтобы просто использовать временную часть существующего столбца Order Date
.)