Во-первых, нет необходимости преобразовывать результаты в int. Просто используйте:
DATEDIFF(DAY, ACTUALFINISHDATE, PROJFINISHDATE)
Во-вторых, DATEDIFF()
отлично работает на datetime
типах данных. Итак, есть две возможности:
- Ваши столбцы на самом деле не
DATETIMEE
, а вместо этого являются строками. - Что-то еще генерирует ошибку.
Я бы предположил (1). Вы можете проверить это, выполнив:
select ACTUALFINISHDATE, PROJFINISHDATE
from t
where try_convert(datetime, coalesce(ACTUALFINISHDATE, getdate())) is null or
try_convert(datetime, coalesce(PROJFINISHDATE, getdate())) is null;
Если столбцы заполнены допустимыми значениями, это не вернет строки.