2014-02-11 119 views
7

我已經看到了這個問題問了很多,我似乎無法找到有關SSRS 2008年則DateDiff爲工作日

一個明確的答案「怎麼只有兩個日期之間計算工作日?」

下面的表達式會給我總的日子,但我期待排除週六和週日。

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

我將不勝感激關於如何實現這一點的具體幫助。

預先感謝您。

+0

的可能重複[工作日計算(http://stackoverflow.com/questions/7444846/business-days-calculation) –

+0

如果我使用的查詢在其他職位,我在哪裏將該查詢放置在SSRS中?以及如何在文本框中引用它? – Lance

+0

最好的辦法是創建一個函數,我應該這樣想。但如何計算工作日,這是一個不同的問題。必須承認我認爲DateDiff是標準的SQL函數? –

回答

3

爲SSRS翻譯的鏈接中的SQL(Number of working days between two dates):希望這會給你一個開始的好地方。將其輸入到文本框的表達式中。

=(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

你是一個天才......謝謝你 – Lance

5

此代碼不完全正確。一年可以在星期六或星期天開始或結束。例如,2011年在星期六開始,在星期六結束。 1月1日& 2011年2月分別是週六和週日,2011年12月31日也是週六。上面的代碼沒有考慮到這種情況。下面的代碼是正確的:

= (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)