2013-11-20 3 views
0

Любой Причина, почему это происходит постоянно, даже если запрос действителен? ... Мой код ниже :)Не удалось конверсия при преобразовании даты и/или времени из символьной строки?

Select Cdf_Code_Tx, ProjectNo, Convert (Date, [Last Call Back],103) As LastCallBack, (CDF_New_des1_Tx+CDF_New_des2_Tx) As Description 
From Products 
Inner Join SpecDetails 
On CDF_Code_Tx = ProductRef 
Inner Join Projects2 
On ProjectNo = PID 
WHERE [Last Call Back] = (SELECT MAX(Convert (Date, [Last Call Back], 103))FROM Projects2) 
Order By Convert (Date, [Last Call Back], 103) 

Когда я запускаю это, появляется эта ошибка!

Msg 241, Level 16, State 1, Line 1 Конверсия не удалась при преобразовании даты и/или времени из символьной строки.

Необходимое руководство & Благодарим вас заблаговременно.

+0

& по держит происходит я имею в виду вопрос моя проблема :) – Kallumasaurus

+0

Пожалуйста, помогите нам разместить точную ошибку, чтобы помочь вы добавили информацию о структуре таблицы, было бы весело на торте. –

+0

Кажется, что '[Last Call Back]' является столбцом varchar, который действительно должен быть столбцом даты. Каковы значения там (= любые значения, не относящиеся к дате)? –

ответ

1

Я думаю, что вы должны проверить данные для [Last Call Back] столбца в таблице. Убедитесь, что все данные действительны для преобразования даты или нет. Я думаю, что некоторая строка недействительна, чтобы преобразовать ее в дату. Поэтому вам нужно проверить его с помощью функции ISDate(). Функция ISDDate() будет работать на основе вашего языка и культуры, как показано ниже.

SET LANGUAGE british 
SELECT ISDATE('2013-11-20') /* will return 0 */ 

SET LANGUAGE us_english 
SELECT ISDATE('2013-11-20') /* will return 1 */ 

Например, если ваш столбец имеет формат, как показано ниже, то это даст ошибку

SELECT CONVERT(DATE, '2013-11-20', 103) 
+0

Это привело меня к выполнению моей задачи под рукой! :) – Kallumasaurus

1

Я думаю, ваша проблема уже здесь Потому что я, кажется, [Last Call Back] является Varchar() тип данных при преобразовании VARCHAR тип данных дата и сравнить с VARCHAR, то вы получили эту ошибку Пожалуйста, вы должны изменить оба условия в той же Datatype

WHERE [Last Call Back] = (SELECT MAX(Convert (Date, [Last Call Back], 103))FROM Projects2) 
+0

Это была моя первая мысль при чтении запроса. Почему на земле _convert_ столбца в любом формате на что-то еще, а затем сравнить его с форматом столбца _original_? – oerkelens

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