我在删除两个日期之间的周末天数的计算中遇到了问题。完整的公式是..。
=DateDiff(DateInterval.day, Fields!FromTime.Value, Fields!ToTime.Value) + 1)
- (DateDiff(DateInterval.WeekOfYear, Fields!FromTime.Value, Fields!ToTime.Value) * 2)
- (iif(Weekday(Fields!FromTime.Value) = 7, 1, 0)
- (iif(Weekday(Fields!ToTime.Value) = 6, 1, 0))
- 1)...but我已经将我的具体问题与DateDiff部件(DateDiff(DateInterval.WeekOfYear, Fields!FromTime.Value, Fields!ToTime.Value))隔离开来,因为这并不总是正确地计算出差异。
附加表(在DateDiff=1上过滤)显示了年份周"from“和"to”部分,然后最后一列返回DateDiff计算。比较截止周和起始周,你可以看到有些相差超过一周,尽管计算总是返回1?
发布于 2021-06-08 20:12:04
我自己找到了问题的原因,出于某种原因,SSRS不喜欢在日期和时间字符串上进行DateDiff周比较(可能数值太大了?)。因此,我的解决方案是找到仅针对日期部分的DateDiff,将其转换为秒,然后在秒上删除原始DateDiff的结果。
=DateDiff(Dateinterval.Second, Fields!FromTime.Value, Fields!ToTimeNow.Value, FirstDayOfWeek.Monday, FirstWeekOfYear.FirstFullWeek)
- ((DateDiff(DateInterval.WeekOfYear, Fields!FromDate.Value, Fields!ToDate.Value, FirstDayOfWeek.Monday, FirstWeekOfYear.FirstFullWeek) * 2) * 86400)
- iif(Weekday(Fields!FromDate.Value, 1) = 1, 86400, 0)
- iif(Weekday(Fields!FromDate.Value, 1) = 7, 86400, 0)
- iif(Weekday(Fields!ToDate.Value, 1) = 1, 86400, 0)
- iif(Weekday(Fields!ToDate.Value, 1) = 7, 86400, 0)https://stackoverflow.com/questions/66137996
复制相似问题