2016-09-09 52 views
0

我們的賬單日期因客戶而異。由於我需要通過報告期追蹤客戶,因此我想自動調整參數。這些信息將填充報告。根據賬單日定義窗口

的bolow代碼不能正常工作,但足以說明我想什麼來實現:

declare @BillDate int 
set @BillDate = 18 

if @billdate > DATEPART(dd, getdate()) 
    select DATEPART(yyyy, getdate()) ++ DATEPART(mm,getdate()) ++ @BillDate --last bill date 
else 
    select DATEPART(yyyy, getdate()) ++ DATEPART(mm,getdate())-1 ++ @BillDate --last bill date 

我也想過將使用dateadd()一個月,但我需要改變當日的日部分,我不確定該怎麼做。

有沒有一種普遍接受的方式來做到這一點?我的想法似乎最好是黑客。

編輯/更新:我將使用這個在where子句中進行過濾,所以:

declare @LastBillDate date, @billday as int 
select @billday = billdate from btable where customer = 'Cust' 

--Define @LastBillDate here based on getdate() and @billday 

SELECT * 
FROM atable 
WHERE starttime > @LastBillDate 
+2

樣本數據和預期的結果會更好地說明你想要達到的目標。 –

回答

0

如下更改select語句:

SELECT CONCAT(DATEPART(yyyy, getdate()),'-',DATEPART(mm,getdate()),'-',@BillDate)