2016-09-09 10 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) 
関連する問題