Используйте try_convert()
и правильный формат, чтобы увидеть, где значения терпят неудачу:
select vi.InvoiceDate
from t
where Try_Convert(date, vi.InvoiceDate, 101) is null and
vi.InvoiceDate is not null;
Обратите внимание, что я переключил формат на 101
. Ваша дата выборки выглядит в формате ММ / ДД / ГГГГ. Вы можете найти список форматов в документации .
. Это хороший урок для вас о том, почему вы должны хранить значения, используя правильный тип. SQL Сервер поддерживает типы данных даты / времени по уважительным причинам . Собственные типы гарантируют, что значения допустимы, например.