Возможно, вы хотите, чтобы GETDATE вычислил границу за девять месяцев с этого момента:
where t.date >= dateadd(m,-9, GETDATE())
Помните, что если t.date - это поле даты и времени, а не просто дата, которую вы увидитестранное поведение на границе девяти месяцев, если вы не округлите время до сравнения.
Или если вы сравниваете его с другим значением, например, с датой вставленной записи в вашем триггере, то, что выget, вероятно, в порядке, например, что-то вроде
declare @latest date
select @latest = inserted.date
delete from ... where t.date < dateadd(m, -9, @latest)
, хотя я предлагаю вам на самом деле архивировать данные, а не удалять их.
Поскольку вы пояснили, что вам нужны целые месяцы,то есть 9 месяцев с конца прошлого месяца, вы можете использовать
declare @today date;
declare @firstOfMonth date;
declare @nineMonthsAgo date;
set @today = GETDATE();
set @firstOfMonth = DATEADD(d, 1-DAY(@today), @today);
set @nineMonthsAgo = DATEADD(m, -9, @firstOfMonth);
... WHERE date >= @nineMonthsAgo AND date < @firstOfMonth