2016-07-29 2 views
0

Я пытаюсь вставить данные из таблицы в другую таблицу, первая таблица - varchar, а вторая - дата.SQLServer - Пропустить неправильные строки при вставке

Я знаю о convert, и почти каждая строка (в таблице varchar) имеет правильный формат. Но некоторые ошибаются.

У меня есть 70000 строк, и если я попытаюсь вставить их все, я получил сообщение об ошибке «Преобразование типа данных varchar в тип данных datetime приводит к значению вне диапазона». Может быть, потому, что месяц с 30 днями вставлен с 31 или, возможно, днем, указанным как 0.

Что мне нужно - это пропустить неправильные и вставить остальные, а способ узнать, какие строки были неправильными, будет супер полезно тоже.

Thx ребята вы рок,

+0

Добавить опцию 'where', чтобы отфильтровать неправильный формат. –

+2

Заполните таблицу temp чистыми данными с помощью Try_PARSE(), TRY_CONVERT(), ваш выбор, а затем вставьте в свою новую таблицу из таблицы temp. – dfundako

+0

Добавьте тег для конкретной версии SQL Server, который вы используете. –

ответ

1

Thx ребята, я использовал @dfundako ответ; с TRY_CONVERT я был в состоянии видеть, какие строки являются неправильными (потому что это возвращает нуль) и вставить правильный код здесь

select 
TRY_CONVERT(datetime, 
CONCAT (CONVERT(VARCHAR(10),db1.AnoCreaReg),'-', 
CONVERT(VARCHAR(10),db1.MesCreaReg),'-', 
CONVERT(VARCHAR(10),db1.DiaCreaReg))end) from Herpetologia.dbo.especimenes db1 
1

Это должно быть легче просто исключить неверные записи для будущих исследований:

SELECT CAST(CharDateColumn as Date) 
FROM ABC 
WHERE IsDate(CharDateColumn) = 1; 
Смежные вопросы