Во-первых, вы можете подумать, что хотите использовать datediff
, но тот факт, что вы используете его (или любую другую функцию) для столбца, делает невозможным использование SQL Server каких-либо индексов, определенных с этимстолбец - и это может быть реальным штрафом за производительность.
Во-вторых, причина, по которой вы получаете записи для будущих дат, заключается в том, что если первая дата позже второй, функция DateDiff
вернетотрицательное число.Все известные мне отрицательные числа меньше 180.
Лучший запрос будет такой:
SELECT *
FROM CARS
WHERE c.ExpiredWarranty <= GETUTCDATE()
-- If you want 6 months, don't bother with days...
AND c.ExpiredWarranty > DATEADD(MONTH, -6, GETUTCDATE())