2012-06-13 2 views
4
Select CONVERT(Date, '13-5-2012') 

Когда я запускаю выше заявление T-SQL в среде Management Studio, я получаю я получаю следующее сообщение об ошибке:Конверсия удалось при преобразовании даты и/или времени из символьной строки Error

«Конверсия удалось при преобразовании дата и/или время от символьной строки «

Оттуда я могу передать это значение действительному типу даты успешно? У меня есть такие значения в столбце nvarchar (255), dataType которого я хочу изменить на тип Date в таблице SQL Server, но я ударил эту ошибку, и я хотел бы сначала сделать преобразование в инструкции Update в таблице.

ответ

0

Попробуйте это ....

Select CONVERT(Date,'5-13-2012') 

'дд-гггг мм' Используйте формат.

+0

я испытал, что это работает, но у меня есть несколько сотен строк в таблице со значениями в '13 -5-2012' в столбце я хочу изменить тип данных этого столбца с nvarchar (255) на Date, но не принимать его из-за значений «13 -5-2012». Поэтому я хочу запустить инструкцию по обновлению, которая будет конвертировать '13 -5-2012 'в' 5-13-2012 ' – StackTrace

4

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

SELECT CASE WHEN ISDATE(mycolumn)=1 THEN CONVERT(Date, mycolumn, [style]) END 
FROM mytable 

Я считаю, что Convert полагается на SQL Настройка формата даты сервера. Проверьте свой формат dateformat на DBCC USEROPTIONS.

Я подозреваю, что если вы установите DateFormat в dmy он поймет:

SET DATEFORMAT dmy 
GO 

Если даже тогда она не работает, вы не можете найти стиль, который соответствует вашим данным, и если данные находится в согласованном формате, вплоть до ручной манипуляции с строкой для его создания (не делайте этого, если вы можете помочь).

+1

Работала как очарование, спасибо! – jinsungy

0

CONVERT предполагает, что исходные данные могут представлять собой дату. Один плохой элемент данных может передавать указанную здесь ошибку преобразования, не указывая на проблему.

Использование ISDATE помогло мне обойти плохие элементы данных.

ВЫБОР CONVERT (ДАТА, CONVERT (CHAR (8), FieldName)) ИЗ DbName ГДЕ IsDate (FieldName) <> 0

0

Вы должны дать формат даты то время как преобразования, это будет устранить ошибку , Формат

выберите новообращенный (дата, '13 -5-2012' , 103)

Смежные вопросы