2016-09-09 2 views
0

Unsere Rechnungstage variieren je nach Kunde. Da ich einen Kunden nach Berichtsperiode verfolgen muss, möchte ich die Parameter automatisch anpassen. Diese Information füllt einen Bericht.Fenster basierend auf dem Rechnungstag definieren

Der bolow Code nicht funktioniert, aber was zeigt ich erreichen möchte:

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 

ich auch über das Hinzufügen eines Monats gedacht haben, mit dateadd(), aber ich würde den Tag Tageszeit ändern müssen, Ich bin mir nicht sicher wie.

Gibt es einen allgemein akzeptierten Weg, dies zu tun? Beide meine Ideen scheinen bestenfalls Hacks zu sein.

Edit/Update: Ich werde dies unter Verwendung von in einer where-Klausel zu filtern, so:

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

Datenabtastwert und die gewünschten Ergebnisse würden besser illustrieren, was Sie erreichen möchten. –

Antwort

0

wie unten Ihre select-Anweisung ändern:

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