You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SSRS 2016:如何设置“本周”日期范围筛选器

搞定SSRS本周工作日数据筛选的方法

嘿,刚接触SSRS和Report Builder遇到这种时间筛选问题太正常了,我给你两种实用的方案,你可以根据自己的需求选:

方案1:固定筛选本周一至周五全天的数据

这个方案不管你周几运行报表,都会展示本周一00:00:00到周五23:59:59之间创建的所有项,完美满足你周五下午5点运行时包含当天数据的需求。

  • 打开报表,找到对应的数据集,进入数据集属性 → 切换到「筛选器」选项卡
  • 添加一个针对Created Date的筛选条件:
    • 字段:选择Created Date
    • 运算符:选Between
    • 第一个值(起始时间):粘贴这个表达式
      =DateAdd("d", 1 - Weekday(Today(), vbMonday), Today())
      
      这个表达式会自动计算出本周一的0点时间
    • 第二个值(结束时间):粘贴这个表达式
      =DateAdd("s", -1, DateAdd("d", 6 - Weekday(Today(), vbMonday), Today()))
      
      这个会计算出本周周五的23:59:59(通过先得到下周六的0点,再减1秒实现)

方案2:动态适配运行时间(周一到周四只显示到当天,周五全天)

如果你希望周一到周四运行时只展示到当天的所有数据,周五不管几点运行都展示全天数据,可以用这个动态判断的表达式:

  • 同样在筛选器里设置Created DateBetween条件:
    • 起始时间和方案1一样:
      =DateAdd("d", 1 - Weekday(Today(), vbMonday), Today())
      
    • 结束时间换成这个带判断的表达式:
      =IIF(Weekday(Today(), vbMonday) = 5, DateAdd("s", -1, DateAdd("d", 1, DateAdd("d", 5 - Weekday(Today(), vbMonday), Today()))), DateAdd("s", -1, DateAdd("d", 1, Today())))
      
      解释一下:
      • 先判断当前是不是周五(Weekday(..., vbMonday)=5
      • 如果是周五,结束时间设为本周五23:59:59
      • 如果不是周五,结束时间设为当天的23:59:59

小提示

  • 如果你不确定表达式是否正确,可以在SSRS的「表达式编辑器」里点击「fx」按钮,然后用「预览」功能查看计算结果,确保时间范围符合预期。
  • 注意你的Created Date字段是日期时间类型,如果是纯日期类型,表达式可以简化,不用考虑秒数的问题。

内容的提问来源于stack exchange,提问作者Humble-Self

火山引擎 最新活动