oracle timestamp 6 конвертировать в sql server datetime2 ошибка - PullRequest
2 голосов
/ 18 апреля 2019

Я использую SSIS для преобразования некоторых данных оракула на сервер SQL.Я нашел для Oracle date timestamp6, как это

26-DEC-82 12.00.00.000000000 AM

приведет к сбою преобразования в SSIS

Ошибка: параметры Year, Month и Day описывают непредставимое

Я думаю, это потому, что ssis не знает, будет ли это 2082 или 1982, поэтому не знаю, как конвертировать. Как я могу преобразовать даты оракула во что-то с yyyy для части года?

обновление: пробовал функцию to_char, упомянутую Хади.Я вижу, что сейчас 2682 года (большинство из них).Я добавил изображение с to_char и оригинальным столбцом для столбцов plate_date и sold_date.Как вы видите, большинство лет - 26xx, два исключения - 18xx.Может кто-нибудь объяснить?

enter image description here

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

В Oracle Source используйте команду SQL для преобразования TimeStamp в nvarchar с помощью функции TO_CHAR() и используйте универсальный формат данных yyyy-MM-dd HH:mm:ss:

TO_CHAR(SOURCECOLUMN, 'YYYY-MM-DD HH24:MI:SS')

А в потоке данных служб SSIS добавьте производный столбец со следующим выражением:

(DT_DATE)[SOURCECOLUMN]

Или добавьте преобразование преобразования данных и преобразуйте столбец в тип данных date.

0 голосов
/ 19 апреля 2019

В SQL Server тип данных "отметка времени" не имеет ничего общего с датами или временем.

Microsoft переименовала свой старый тип данных «timestamp» в «rowversion», потому что это просто 8-байтовое число, которое используется для записи последовательности событий «с измененной строкой».

С другой стороны, «временная метка» Oracle действительно относится ко времени, потому что «временная метка» Oracle расширяет их тип данных «дата». подробнее здесь .

К сожалению, SQL Server по-прежнему распознает «отметку времени» как допустимый тип данных name .

Итак, я подозреваю, что ваше сообщение об ошибке может быть связано с омонимом timestamp-timestamp.

...