2014-02-11 9 views
7

ich diese Frage gesehen haben viel gefragt, und ich kann nicht eine klare Antwort scheint überSSRS 2008 Zeitraum für Arbeitstage

zu finden

„wie Werktage berechnen nur zwischen zwei Terminen?“

Der Ausdruck unten gibt mir die Gesamtzahl der Tage, aber ich bin auf der Suche Samstag und Sonntag ausgeschlossen werden soll.

=DateDiff("d",Parameters!STARTDATE.Value,Parameters!ENDDATE.Value) 

Ich würde über spezifische Hilfe darüber, wie dies zu erreichen ist, freuen.

Vielen Dank im Voraus.

+0

möglich Duplikat [Geschäftstag Berechnung] (http://stackoverflow.com/questions/7444846/business-days-calculation) –

+0

Wenn ich die Abfrage in dem anderen Beitrag zu verwenden, Wo stelle ich diese Abfrage in SSRS? und wie referenziere ich es in der Textbox? – Lance

+0

Beste Wette, eine Funktion zu schaffen wäre, sollte ich denken. Das ist eine andere Frage, wie man die Werktage berechnet. Muss ich zugeben, DateDiff war die Standard-SQL-Funktion? –

Antwort

3

Die SQL in der Verbindung (Number of working days between two dates) für SSRS übersetzt: Hoffentlich wird Ihnen einen guten Platz geben zu starten. Geben Sie dies in den Ausdruck für das Textfeld ein.

=(DateDiff(DateInterval.day,Parameters!STARTDATE.Value,Parameters!ENDDATE.Value)+1) 
-(DateDiff(DateInterval.WeekOfYear,Parameters!STARTDATE.Value,Parameters!ENDDATE.Value)*2) 
-(iif(Weekday(Parameters!STARTDATE.Value) = 7,1,0) 
-(iif(Weekday(Parameters!ENDDATE.Value) = 6,1,0))-1) 
+0

Du bist ein Genie ... Danke – Lance

5

Dieser Code ist nicht genau richtig. Ein Jahr kann mit einem Samstag oder Sonntag beginnen oder enden. Zum Beispiel beginnt 2011 an einem Samstag und endet an einem Samstag. 1. JANUAR & 2. 2011 sind Samstag und Sonntag jeweils und 31. Dezember 2011 ist auch ein Samstag. Der obige Code berücksichtigt dieses Szenario nicht. Der folgende Code ist korrekt:

= (DateDiff(DateInterval.day,Parameters!BeginDate.Value,Parameters!EndDate.Value)+1) 
- (DateDiff(DateInterval.WeekOfYear,Parameters!BeginDate.Value,Parameters!EndDate.Value)*2) 
- IIF(Weekday(Parameters!BeginDate.Value,1) = 1,1,0) 
- IIF(Weekday(Parameters!BeginDate.Value,1) = 7,1,0) 
- IIF(Weekday(Parameters!EndDate.Value,1) = 1,1,0) 
- IIF(Weekday(Parameters!EndDate.Value,1) = 7,1,0)