Если вы не можете удалить GETDATE () из предложения WHERE, это, вероятно, более простое для чтения решение.
Select
*
from
table
where
DATEDIFF(DD,passdate,GETDATE()) = 1
Но это не самое эффективное решение.
Идеально предварительно загружать GETDATE () в переменную
DECLARE @d DATE = GETDATE();
Select
*
from
table
where
DATEDIFF(DD,passdate,@d) = 1
Если в [passdate] есть индекс, то в идеале вам следует избегать функций в предложении WHERE, поскольку это влияет на возможности SQL Server.использовать индексы.
Вот что-то более дружественное к индексам (но для вашей среды потребуется настройка), но для правильной работы переменные должны иметь тип данных dame как столбец [passdate], чтобы избежать неявных преобразований.
DECLARE @start DATE = DATEADD(DD,-1,GETDATE());
DECLARE @end DATE = GETDATE();
Select
*
from
table
where
passdate >= @start
AND
passdate < @end