我似乎無法弄清楚我需要編寫以實現以下內容的代碼。如果GETDATE()是星期一比我想要刪除所有數據是一年還多2天(工作不會在星期六和星期日運行)。我試圖讓下面的代碼在不寫兩次的情況下工作..i.e在較短的一段代碼中實現相同的效果。任何幫助將不勝感激。T-SQL案例邏輯
DELETE FROM dbo.table
WHERE AddedOn = CASE WHEN DATENAME(WEEKDAY,'01/23/2012') = 'Monday' then CONVERT(date,dateadd("d",-368,getdate())) else
CONVERT(date,dateadd("d",-365,getdate())) end
DELETE FROM dbo.table
WHERE AddedOn = CASE WHEN DATENAME(WEEKDAY,'01/23/2012') = 'Monday' then CONVERT(date,dateadd("d",-367,getdate())) else
CONVERT(date,dateadd("d",-365,getdate())) end
你是否考慮過閏年? – RedFilter
不是。但是,如果要刪除368天前的任何內容,那麼它是否閏年並不重要。因此368應該照顧閏年。 – rvphx
您是否考慮過使用不等式?如果你每天都在運行(ish),你是否想刪除所有比一歲還舊的數據?如果是這樣,只是使用不等式,併爲所有情況設置 – JNK