У меня есть таблица с 5 миллионами записей дат, хранящихся в виде char (10) с форматом yyyy/mm/dd. Мне нужно преобразовать эти значения в дату, так что я использую:SQL Update varchar to date error
UPDATE [Database].[dbo].[Table]
SET [DoB]=convert(datetime,[DoBText],103)
GO
Но я получаю ошибку:
«Преобразование типа VARCHAR данных в тип данных даты и времени привело к вне диапазона стоимость."
Теперь я попытался исправить данные, чтобы этого не произошло - т.е. нет «yyyy» ниже 1900 или выше 2000, нет «dd» выше 30 (28 для февраля), нет «мм» выше 12 или ниже 0. Нет NULL.
По-прежнему преобразование не выполняется.
Можно ли каким-либо образом позволить SQL пропустить преобразование при ошибке и просто продолжить?
E.g. что-то вроде:
SET [DoB]= try to do [DoB]=convert(datetime,[DoBText],103) if fails SET [DoB] = NULL
Благодаря Карл
В течение нескольких месяцев есть 31 дней - Надеюсь, вы не нарушили данные: S –
Также нет месяца в месяце - месяц должен быть 1-12 включительно. –