Ssrs 2008 SSRS 2008工作日的日期差异

Ssrs 2008 SSRS 2008工作日的日期差异,ssrs-2008,datediff,Ssrs 2008,Datediff,我看到这个问题被问了很多次,我似乎找不到一个明确的答案 “如何仅计算两个日期之间的工作日?” 下面的表达式将给出总天数,但我希望排除周六和周日 =DateDiff("d",Parameters!STARTDATE.Value,Parameters!ENDDATE.Value) 我将非常感谢有关如何实现这一目标的具体帮助 提前感谢。链接()中的SQL已翻译为SSRS:希望这将为您提供一个良好的起点。在文本框的表达式中键入 =(DateDiff(DateInterval.day,Parame

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

“如何仅计算两个日期之间的工作日?”

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

=DateDiff("d",Parameters!STARTDATE.Value,Parameters!ENDDATE.Value)   
我将非常感谢有关如何实现这一目标的具体帮助

提前感谢。

链接()中的SQL已翻译为SSRS:希望这将为您提供一个良好的起点。在文本框的表达式中键入

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

这个代码不完全正确。一年可以以周六或周日开始或结束。例如,2011年从周六开始,到周六结束。2011年1月1日和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)

下面的代码在所有场景中都能正常工作

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

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

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

如果我在另一篇文章中使用该查询,那么该查询在SSRS中的位置是否可能重复?我该如何在文本框中引用它呢?我想最好的办法是创建一个函数。不过,对于如何计算工作日来说,这是一个不同的问题。必须承认我假设DateDiff是标准的sql函数?谢谢-DateDiff是标准的sql函数。但是,在SQL中,将周末排除在外是不标准的。不确定这是如何工作的/为什么工作的,但对我来说确实如此。很高兴有一个简单的一行。