Конвертировать столбец varchar в smalldatetime

У меня есть таблица с 800+ записей. В этой таблице у меня есть столбец с именем 'Data' типа данных varchar(10), который содержит даты в формате dd.MM.yyyy. Я хочу преобразовать его в smalldatetime.

Я попытался преобразовать его с помощью Enterprise Management Studio Express, но я получаю эту ошибку:

The conversion of char data type to smalldatetime data type resulted in an out-of-range smalldatetime value.

Как я могу преобразовать это?

3 ответа

Решение

Я думаю, вам нужно будет немного поработать со строками, чтобы заставить это работать, так как я думаю, что SQL ожидает 'MM.dd.yyyy'. Итак, обновите таблицу, чтобы сначала поменять месяц и день, а затем конверсия.

update YourTable
    set Data = SUBSTRING(Data,4,3) + LEFT(Data,3) + RIGHT(Data,4)

Если вы не хотите неявного преобразования в smalldatetime, вы должны использовать CONVERT и стиль аргумента.
Форматdd.MM.yyyy соответствует стилю 104.
Например:

SELECT CONVERT(smalldatetime, '31.12.2018', 104) AS "Result"

Result
------
2018-12-31 00:00:00

Ты можешь использовать:
SELECT ID, CAST(VarcharCol As SmallDateTime) as DateTimeCol From Test1
Это вернет таблицу со значениями varcharcol как smalldatetime. Затем обновите содержимое varcharcol новыми значениями.

Другие вопросы по тегам