Поля типа CHAR (x) в SQL Server будут дополнены пробелами до их фиксированной длины, например если у вас есть CHAR (20), и у вас есть дата, такая как «2009-04-20», поле действительно будет содержать «2009-04-20», и это может вызвать проблемы при преобразовании в datetime.
Кроме того, если ваше поле CHAR полностью пустое, оно также не сможет преобразоваться в допустимое время даты.
Решения:
a) Вы можете изменить тип данных для ваших столбцов на VARCHAR (x) и таким образом избавиться от наиболее вероятного ненужного заполнения:
ALTER TABLE YourTable
ALTER COLUMN YourColumnName VARCHAR(x)
b) Вы можете проверить наличие пустых значений поля CHAR (x) и не преобразовывать их (или выбрать для них значение даты-времени по умолчанию)
c) Вы можете обрезать поля CHAR (x), чтобы удалить ненужные отступы:
CONVERT(LTRIM(RTRIM(YourFieldName)), ......)