сбой преобразования при преобразовании даты и / или времени из символа в строку в предложении where - PullRequest
0 голосов
/ 19 июня 2020

У меня была таблица, в которой service_date было char (8), например 20191007. Я сделал convert(date,service_date) как new_date и, похоже, преобразовал его в тип данных date. Когда я пытаюсь использовать convert(date,service_date) >= '2019-10-07', я получаю сообщение об ошибке «Сбой преобразования при преобразовании даты и / или времени из символа в строку». Что мне нужно изменить, чтобы он заработал?

Спасибо.

1 Ответ

2 голосов
/ 19 июня 2020

Формат строки, в котором вы храните свои даты, позволяет выполнять фильтрацию по литералу sring, поэтому я бы просто использовал:

service_date >= '20191007'

Это более эффективно, чем использование функции преобразования, поскольку может воспользоваться индексом в столбце, если таковой имеется.

Однако, как прокомментировал Джон Каппеллетти, это может привести к невыполненным результатам, если ваши данные имеют неправильный формат. В этом случае используйте try_cast():

try_cast(service_date as date) >= '20191007'

try_cast() пытается преобразовать строку в целевой тип данных и возвращает null в случае сбоя преобразования.

...