Конвертировать столбец varchar в smalldatetime - PullRequest
3 голосов
/ 01 октября 2010

У меня есть таблица с 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 ]

2 голосов
/ 01 октября 2010

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

update YourTable
    set Data = SUBSTRING(Data,4,3) + LEFT(Data,3) + RIGHT(Data,4)
0 голосов
/ 14 декабря 2018

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

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

Result
------
2018-12-31 00:00:00
0 голосов
/ 01 октября 2010

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

...