2016-08-08 2 views
0

Я создал 3 представления в SQL-сервере, первый и второй представления имеют небольшие столбцы с датой, а второй - дату, поэтому для объединения между представлениями я конвертирую дату время в небольшое время даты с помощью функции преобразования в сервере SQL, как так:Ошибка преобразования даты времени в smalldatetime

Convert (SMALLDATETIME, V_date) 

у меня была эта ошибка:

error in converting a varchar to smalldatetime 

Примечание я использовал бросок, и всегда это та же самая ошибка. Я не понимаю, почему в сообщении об ошибке появляется сообщение varchar, потому что значение столбца (V_date) в начале координат равно дате.

+0

вид 1: Samll даты и времени, как 2016-04-12 00:00:00 View2 те же данные, view3 даты времени 2016-04-12 00: 00: 00,000 и я хочу, чтобы преобразовать его в дату время в представлении3 работает. но когда я сделал соединение между тремя видами, у меня возникла ошибка сообщения. – hollyx

+0

Что делать, если вы CAST (поле DATETIME) при использовании любого поля – Cato

ответ

0

вы получаете эту ошибку, потому что V_date является VARCHAR и не DATETIME

вы должны проверить содержимое вашего V_date поля, поскольку он не содержит корректную дату (проверку для MDY против ДМГА)

0

Этих должно сработать.

SELECT CONVERT (smalldatetime, CONVERT (datetime, V_date));

+0

UNFORTUNALLY NO, оно работает в представлении, но когда я делаю UNION, я всегда получаю сообщение об ошибке ниже – hollyx

+0

Работает отлично со мной. Можете ли вы отправить полный запрос? –

+0

выберите код как dom, имя как уровни, totalttc как ttc, totalht as ht, NuMbl AS Num, V_date как CONVERT (smalldatetime, CONVERT (datetime, V_date)) из Mb_views3 – hollyx

0

Используйте try_convert, а затем найдите NULL на выходе, чтобы найти недействительные данные.

SELECT * FROM 
(SELECT V_date as original, TRY_CONVERT(smalldatetime, TRY_CONVERT(datetime, V_date)) as d FROM yourtable) t 
WHERE d IS NULL; 
Смежные вопросы