Конвертировать столбец 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 новыми значениями.