невозможно преобразовать varchar в дату на сервере sql - PullRequest
3 голосов
/ 25 июля 2011

в моих данных столбец под названием «duedate» в формате varchar (5) содержит даты, сохраненные в следующем формате «20110725» для 25 июля 2011 года, есть ли способ, которым я могу преобразовать это в формат даты

я пытался использовать

cast(duedate as datetime) 

который не работал Затем я попытался преобразовать его в bigint, а затем в datetime

cast( cast(duedate as bigint) as datetime) 

который сказал

арифметическая ошибка переполнения


Извините за путаницу, это был varchar (50) - ошибка опечатки, и большое спасибо за помощь, я попробую то, что вы, ребята, упомянули

Ответы [ 4 ]

5 голосов
/ 25 июля 2011

Если столбец действительно varchar ( 5 ), то он не может иметь значения типа «20110725», поскольку это будет 8 символов.

Может быть, значения были усечены, когда они были вставлены?
'20110725', сокращенный до 5 символов, становится '20117', и преобразование, которое не будет работать.

Я думаю, проблема вчто-то в этом роде, потому что, как сказал Младен Прайдик, , преобразование '20110725' в дату и время работает идеально.

3 голосов
/ 25 июля 2011

См. в этой таблице действительных кодов преобразования даты и времени. Вам понадобится код 112, который конвертируется из формата yyyymmdd.

CONVERT (datetime, duedate, 112)
2 голосов
/ 25 июля 2011

как это не сработало?выполнение SELECT cast («20110725» в качестве даты и времени) отлично работает для меня.

1 голос
/ 25 июля 2011

Попробуйте запустить это на своей таблице, чтобы найти значения, которые не являются датами:

SELECT duedate
FROM your_table
WHERE ISDATE(duedate) = 0;

Как сказал Кристиан, VarChar(5) не сможет содержать ожидаемое вами значениелибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...