首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DateDiff DateInterval.WeekOfYear返回不一致的结果

DateDiff DateInterval.WeekOfYear返回不一致的结果
EN

Stack Overflow用户
提问于 2021-02-10 21:39:13
回答 2查看 39关注 0票数 0

我在删除两个日期之间的周末天数的计算中遇到了问题。完整的公式是..。

代码语言:javascript
运行
复制
=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?

Table of Results

EN

Stack Overflow用户

发布于 2021-06-08 20:12:04

我自己找到了问题的原因,出于某种原因,SSRS不喜欢在日期和时间字符串上进行DateDiff周比较(可能数值太大了?)。因此,我的解决方案是找到仅针对日期部分的DateDiff,将其转换为秒,然后在秒上删除原始DateDiff的结果。

代码语言:javascript
运行
复制
=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)
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66137996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档