SSRS 2008 Datediff工作日

时间:2014-02-11 16:05:24

标签: ssrs-2008 datediff

我已经看到这个问题了很多,我似乎找不到一个明确的答案

“如何仅在两个日期之间计算营业日?”

下面的表达式将给我总天数,但我希望排除周六和周日。

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

我很感激有关如何实现这一目标的具体帮助。

提前谢谢。

4 个答案:

答案 0 :(得分: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)

答案 1 :(得分:3)

为SSRS翻译的链接中的SQL(Number of working days between two dates):希望这将为您提供一个好的起点。在文本框的表达式中键入this。

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

答案 2 :(得分:0)

下面的代码在所有情况下都能为我正常工作

= (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!EndDate.Value,1) = 7,1,0)

答案 3 :(得分:0)

在两个日期之间获取工作日的简单方法是:

DateDiff(DD, BeginDate, EndDate) - DateDiff(WK, Begindate, EndDate)*2