Я думаю, причина ваших проблем в том, что вы используете стандартные математические операторы для работы с датами.
Приведенный ниже пример основан на предоставленных вами примерах с некоторыми настройками для использования функций даты.Он может не полностью отражать ваш желаемый результат, но, надеюсь, займет у вас большую часть пути:
CREATE TABLE #a ([Date TCY Vacated] DATE, [Date TCY Tenanted] DATE)
INSERT INTO #a ([Date TCY Vacated], [Date TCY Tenanted])
VALUES ('2018-02-10', '2018-02-08')
,(NULL, '2018-02-08')
,('2018-02-10', NULL)
,('2018-02-10', '2018-02-28')
DECLARE @End DATE = GETDATE()
SELECT *,
CASE WHEN [Date TCY Vacated] IS NULL
THEN 0
ELSE CASE WHEN [Date TCY Tenanted] IS NULL
THEN DATEDIFF(d, @End, DATEADD(d, 1, [Date TCY Vacated]))
ELSE CASE WHEN DATEADD(d, -1, [Date TCY Tenanted]) < DATEADD(d, 1, [Date TCY Vacated])
THEN 0
ELSE DATEDIFF(d, DATEADD(d, -1, [Date TCY Tenanted]), DATEADD(d, 1, [Date TCY Vacated]))
END
END
END
FROM #a
В частности, этот код использует DATEADD и DATEDIFF вместо '+' и '-' для обеспечения выполнения всех операций.в днях.