2014-03-04 50 views
0

我需要編寫一個查詢來選擇每隔(30,60,90,Nx30)天前創建的重複訂單列表。如果沒有必要,我不想使用遊標。我們的目標是能夠運行一個查詢,顯示我今天將要付款的訂單。使用TSQL獲取下一個帳單日期

我意識到這個代碼將無法正常工作,但我認爲這說明了什麼,我試圖做的:

declare @period int; 
set @period = 30; 

select @period = @period - @period, [id] from orders 
where 
    datepart(year, StartedAt) = datepart(year, (dateadd(day, [email protected], getutcdate()))) 
    and datepart(month, StartedAt) = datepart(month, (dateadd(day, [email protected], getutcdate()))) 
    and datepart(day, StartedAt) = datepart(day, (dateadd(day, [email protected], getutcdate()))) 

謝謝。

回答

1

如果我理解正確,您想從orders獲得行,其中StartedAt以來的天數是該期間的倍數。如果是的話,這應該做你想做的:

select o.* 
from orders o 
where datediff(day, StartedAt, getutcdate()) % @period = 0; 

這種計算今天StartedAt之間的日期數,然後使用「MOD」操作以確定它是否是@period的倍數。

+1

這正是我要找的。像魅力一樣工作!謝謝! –