2010-03-05 2 views
0

Я собирался импортировать данные из таблицы в MySQL в SQL SERver 2008 через SSIS. Но я не могу переносить из-за Даты в таблице. Есть некоторые данные типа данных datetime, такие как «0001-01-10», который не поддерживает в SQL Server, где годы в дате варьируются от 1753 до 9999. Итак, как я могу решить эту проблему в MySQL-запросах?Задача преобразования даты

ответ

1

Если эти даты являются достоверными данными, тогда нет простого способа справиться с этим в SqlServer. В принципе, требуется обработчик персонализированной даты. Достаточно хорошее приближение может быть достигнуто путем разделения года на одно целое поле и ввода месяца и дня в поле даты с постоянным годом. Каждое сравнение было бы сложным.

Скорее всего, для большинства бизнес-приложений такие даты бесполезны и должны быть очищены или заменены значениями NULL.

0

Обратите внимание, что ни один типов данных служб SSIS не действительно эквивалентны SQL Server даты и времени или smalldatetime типов, с их ограниченным диапазоном допустимых дат.

Много интерактивной документации предполагает, что DT_DBTIMESTAMP эквивалентен SQL datetime. Это верно только до определенной точки. Даты за пределами разрешенного диапазона datetime будут счастливо переданы DT_DBTIMESTAMP (или любому типу даты SSIS), но затем вызывают ошибку, если вы попытаетесь записать их в столбец SQL datetime.

Смутно, SSIS представляет собой внешний SQL DATETIME столбцы как DT_DBTIMESTAMP, предполагая, что даты и времени и DT_DBTIMESTAMP эквивалентны, когда они не.

Это означает, что вы не можете предвидеть проблемы с датой выхода из системы в SSIS путем литья. Если вы в конце концов собираетесь писать в столбцы datetime или smalldatetime, вы должны четко указать, что дата не находится за пределами допустимого диапазона (< 1/1/1753, или 1/1/1900 для smalldatetime) ,

Смежные вопросы