Ошибка кажется довольно понятной.insertdate
и / или sessiondate
хранятся в виде строк.Вы должны исправить данные.
SQL Server имеет три способа преобразования таких значений:
- Неявным образом, помещая строки в место, где ожидаются дата / время.
- Явно используя
CAST()
/ CONVERT()
. - Явно и гибко, используя
PARSE()
.
Вам необходимо выяснить, какой у вас формат.Они могут это преобразовать.Вы не предоставили никакой информации, но типичным методом будет:
where insertdate < DATEADD(DAY, -30, TRY_CONVERT(date, sessiondate, <date style here>))
Обычно достаточно форматов, доступных с CONVERT()
(см. здесь ).Иногда вам может понадобиться использовать TRY_PARSE()
.
РЕДАКТИРОВАТЬ:
Для поддержки меток времени, вам необходимо преобразовать в datetime2
:
try_convert(datetime2, '2019-07-08T09:17:19+02:00')
Вы должнысравнивать со значением с отметкой времени.