我需要一些帮助,我的案例是
1 - 2个参数的日期从日期到
由用户手动输入以供稍后在某些计算中使用的2个团队参数数
rquirement
根据过滤时间(日期和日期)计算没有星期五的工作日(每周6天)
代码
=(COUNT(IIF(Fields!Job_Status.Value="Closed",1,Nothing))) /
((DateDiff(DateInterval.day,Parameters!DateFrom.Value,Parameters!ToDate.Value
)) * (Parameters!Number_of_teams.Value))
注意
此代码工作正常,但它计算所有天数
提前致谢
答案 0 :(得分:1)
试试这个:
=(DATEDIFF(DateInterval.Day, CDATE("2016-02-14"), CDATE("2016-02-17")) + 1)
-(DATEDIFF(DateInterval.WeekOfYear, CDATE("2016-02-14"), CDATE("2016-02-17")) * 2)
-(IIF(WeekdayName(DatePart(DateInterval.Weekday,CDATE("2016-02-14"),FirstDayOfWeek.System))="sunday",1,0)
-(IIF(WeekdayName(DatePart(DateInterval.Weekday,CDATE("2016-02-17"),FirstDayOfWeek.System))="saturday",1,0)
))
在上述情况下,它将返回给定范围之间的星期一到星期五的计数。对于StartDate = 2016-02-14和EndDate = 2016-02-21,它返回5.
更新:表达式,以排除计数周五。
=(DATEDIFF(DateInterval.Day, Parameters!DateFrom.Value, Parameters!ToDate.Value) + 1)
-(DATEDIFF(DateInterval.WeekOfYear, Parameters!DateFrom.Value, Parameters!ToDate.Value) * 1)
-(IIF(WeekdayName(DatePart(DateInterval.Weekday,Parameters!ToDate.Value,FirstDayOfWeek.System))="friday",1,0))
经过测试:
DateFrom ToDate Result
2016-02-12 2016-02-19 6
2016-02-12 2016-02-18 6
2016-02-12 2016-02-15 3
我觉得星期六和星期天是工作日而不是星期五,这很奇怪。
如果这有助于您,请告诉我。
答案 1 :(得分:0)
从长远来看,针对此类问题的最可持续解决方案是创建“date dimension”又名“日历表”。这样,可以适应不符合某种简洁数学模式的日期分类中的任何怪癖。如果您的政府决定从明年开始将公共假日宣布为公共假期,只需将其添加到您的公共假期列(属性)。如果你想分组说“工作日,周末和公众假期”,不需要重新发明轮子,只需将该分类添加到日历表中,每个人都可以从中受益,而且您不必担心不一致计算/分类。您可能想要该月的第一个或最后一个工作日。很容易,按日历表中的该列进行过滤。