2014-01-17 3 views
1

Это мой запрос:Конверсия удалось при преобразовании даты и/или времени из символьной строки, даже если результат является правильным

set dateformat mdy; 
    select cast([File Date] as date) as 'test' from gpdetail 

, который производит эту ошибку:

Msg 241, Level 16, State 1, Line 2 
    Conversion failed when converting date and/or time from character string. 

Любая идея, как избавиться ошибки? любая помощь очень ценится застрял на этом в течение веков :(

Under the results tab it shows the correct results Однако, на вкладке результатов он показывает правильные результаты

this is the actual data это фактические данные

+4

вы можете иметь запись где-то, что не отформатирован правильно, таким образом, он не может преобразовать всю вещь. если вы получили SQL 2012, вы попробуете 'TRY_CONVERT' и проверите результаты, чтобы увидеть, какая строка возвращает null, это будет ваша запись« BAD ». –

+0

. Вам ли будет лучше работать:' convert (datetime, [File Date], 1) ' – Linger

+1

Сколько строк в таблице? Только что вы показали нам? Вероятно, он не работает в следующем ряду. Покажите нам, что это содержит. –

ответ

5

место для начала с isdate() функции:.

select [File Date] 
from gpdetail 
where isdate([File Date]) = 0; 

Это может найти места, где дата не соответствует

Если вы просто хотите, чтобы игнорировать плохо отформатированные строки, то попробуйте:

select (case when isdate([File Date]) = 1 
      then cast([File Date] as date) 
     end) as test 
from gpdetail 
+0

@ Спасибо за объяснение, это работает и для меня. :) – BNN

+0

Один тонкий раздражение, с которым я столкнулся, заключается в том, чтобы избежать предложения ELSE, иначе THEN оценивается безоговорочно, вызывая ошибку 241 ... – esteewhy

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