2016-06-24 6 views
0

У меня есть приложение, которое импортирует файл DAT в некоторые таблицы SQL Server.Проблемы с форматом даты SQL Server 2012

DAT-файл иногда содержит неправильные форматы даты.

Пример:

DateCreated = 000100893 

DateCreated столбца в SQL Server является datetime типом.

Приложение не работает при импорте данных из-за неправильного формата, и мне приходится вручную обнулять эти значения, чтобы я мог повторно импортировать.

Есть ли способ в SQL иметь ограничения на столбец datetime? Например, если данные находятся не в правильном формате, автоматически обнулите столбец? Я не могу изменить тип данных datetime для этого столбца, потому что большую часть времени даты верны, и я использую этот столбец для других вычислений.

+0

Почему не разбирать дату? –

+0

Это стандартный ETL, извлечение, трансформация и загрузка. Для извлечения импортируйте свой файл DAT в промежуточную таблицу, где все поля, получающие данные, являются varchar. Часть преобразования состоит в обновлении других столбцов из столбцов varchar. В этом случае вы будете обновлять dateCreated из dateCreatedVarchar, используя предложение where, чтобы отфильтровать такие значения, как 'fred' и 'barney'. Загрузочная часть предназначена для записи в основные таблицы из промежуточной таблицы. –

ответ

2

Вы ищете функции TRY_PARSE:

SELECT TRY_PARSE(DateCreated AS datetime) 

возвращает null если DateCreated не может быть брошен в datetime

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