我想排除2016年的周末,但我需要在2015年的周末进行计算。 我在我的查询中使用了这个表达式:
((DATEPART(dw, IntervalDate) + @@DATEFIRST) % 7) NOT IN (0,1)
但这个周末不包括在内。我怎样才能排除2016年的周六,周日?
我使用SSRS,我一直在考虑在过滤器选项中排除2016年的周末,但这需要花费很多时间,也许可以在查询中进行。
答案 0 :(得分:0)
试试这个:
(DATEPART(year, IntervalDate) <> 2016) OR ((DATEPART(dw, IntervalDate) + @@DATEFIRST) % 7) NOT IN (0,1)
答案 1 :(得分:0)
大概你是说你想通过排除2016年的周末来限制你的结果集?
此代码将为您执行此操作:
WHERE YEAR(IntervalDate) <> 2016 OR (YEAR(IntervalDate) = 2016 AND DATEPART(dw,IntervalDate) > 1 AND DATEPART(dw,IntervalDate) < 7)
(你可以使用YEAR或DATEPART)
但是你必须先了解一周中哪一天对应于1。 看一下SET DATEFIRST命令。
答案 2 :(得分:0)
日历表极大地简化了像这样的查询。一个很大的优点是正确的查询显然正确。
select *
from calendar
where (year_of_date = 2015)
or (year_of_date = 2016 and day_of_week not in ('Sat', 'Sun'))
order by cal_date;