SSRS 2016:如何设置“本周”日期范围筛选器
搞定SSRS本周工作日数据筛选的方法
嘿,刚接触SSRS和Report Builder遇到这种时间筛选问题太正常了,我给你两种实用的方案,你可以根据自己的需求选:
方案1:固定筛选本周一至周五全天的数据
这个方案不管你周几运行报表,都会展示本周一00:00:00到周五23:59:59之间创建的所有项,完美满足你周五下午5点运行时包含当天数据的需求。
- 打开报表,找到对应的数据集,进入数据集属性 → 切换到「筛选器」选项卡
- 添加一个针对
Created Date的筛选条件:- 字段:选择
Created Date - 运算符:选
Between - 第一个值(起始时间):粘贴这个表达式
这个表达式会自动计算出本周一的0点时间=DateAdd("d", 1 - Weekday(Today(), vbMonday), Today()) - 第二个值(结束时间):粘贴这个表达式
这个会计算出本周周五的23:59:59(通过先得到下周六的0点,再减1秒实现)=DateAdd("s", -1, DateAdd("d", 6 - Weekday(Today(), vbMonday), Today()))
- 字段:选择
方案2:动态适配运行时间(周一到周四只显示到当天,周五全天)
如果你希望周一到周四运行时只展示到当天的所有数据,周五不管几点运行都展示全天数据,可以用这个动态判断的表达式:
- 同样在筛选器里设置
Created Date的Between条件:- 起始时间和方案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
- 先判断当前是不是周五(
- 起始时间和方案1一样:
小提示
- 如果你不确定表达式是否正确,可以在SSRS的「表达式编辑器」里点击「fx」按钮,然后用「预览」功能查看计算结果,确保时间范围符合预期。
- 注意你的
Created Date字段是日期时间类型,如果是纯日期类型,表达式可以简化,不用考虑秒数的问题。
内容的提问来源于stack exchange,提问作者Humble-Self




