2016-10-10 4 views
0

Я пытаюсь взять дату, содержащуюся в varchar, чтобы сравнить ее с getdate() в предложении where. Переменная VARCHAR всегда выглядит следующим образом:Подстрока SQL Server на дату, где caluse

Последний визит: MM/DD/YY

Некоторые образцы данных:

Last Seen: 07/12/16 
Last Seen: 08/01/16 
Last Seen: 07/22/16 
NULL 
NULL 
NULL 
NULL 
Last Seen: 07/28/16 

Преобразование VARCHAR в DateTime и найти разницу дней, как ниже работ:

datediff(day,CAST(substring(CA_NOTE, 12, 8) as datetime), getdate()) as dayspassed 

Проблема в том, что когда я придерживаюсь этой кодировки в where, чтобы сравнить дату с getdate(), я продолжаю получать ту же ошибку.

where datediff(day,CAST(substring(CA_NOTE, 12, 8) as datetime), getdate()) > 90 

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

Я работаю под управлением SQL Server 2014 Management Studio.

ред принимать во внимание комментарии

destination-data «s предложение использовать TRY_PARSE работал! Всем спасибо.

+1

Можете ли вы дать нам некоторые данные образца? – GuidoG

+0

Благодарим вас за комментарии. dateiff (день, CAST (подстрока (CA_NOTE, 12, 8) в качестве даты и времени), getdate())> 90 дает такое же сообщение об ошибке, что и раньше. – Adam

+0

... что означает, что у вас сейчас другой вопрос. Эта новая версия * выглядит * хорошо, поэтому я вернусь к @GuidoG и его просьбе, чтобы показать некоторые примеры данных, с которыми мы можем работать. –

ответ

1

SQL не знает, что делать с getdate()-90 - вычесть 90 дней? 90 минут? 90 лет?

Вам необходимо использовать функцию, такую ​​как dateadd, например.

where convert(varchar(30),cast(substring(CA_NOTE, 12, 8) as datetime),102) < dateadd(dd, -90, getdate()) 
+0

@bassrek имеет исправление для вашей проблемы. Mine - это исправление вашей следующей проблемы. –

1

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

CAST(substring(CA_NOTE, 12, 8) as datetime) 
+0

Хороший улов. Несколько проблем с этим запросом! –

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

  • Нет связанных вопросов^_^