你可能想GETDATE從現在開始計算九個月邊界:
where t.date >= dateadd(m,-9, GETDATE())
請注意,如果t.date是日期和時間字段不只是約會,你會看到奇怪的行爲在九個月的邊界上,除非你也在比較之前捨棄了時間。
或者,如果你比較它與另一個值如插入的記錄在你的觸發器中的日期,那麼你得到的可能是好的,例如,像
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
來源
2011-06-14 15:41:47
Rup
通常,使用代碼標籤格式化代碼幷包含表結構的想法是一個好主意。 – JNK 2011-06-14 15:41:40
我知道它容易讓你們也爲更好地理解.. – Shahsra 2011-06-14 15:44:53
小的修改我的問題,如果我們有一個日期,然後回答以下問題,將工作。但是如果我們有[Fiscal_Month]而不是[Date],那麼呢? [Fiscal_Month]的例子就像這個'2012M03','2011M05'等,然後dateadd(m,-9,date)語法不會在那裏工作..我們還能做什麼? – Shahsra 2011-06-14 18:17:23