我刚设置了下面的过滤器,只检索今天和明天的项目(工作正常):
BETWEEN { fn CURDATE() } AND DATEADD(day; 1; GETDATE())
但是周五我必须得到星期一的项目 - 我试图围绕这个设置一个IF声明,但我根本没有运气。下面是一个例子(不起作用),但我对如何正确写这个问题感到难过:
IF DATEPART(WEEKDAY, GETDATE()) IN (6)
THEN BETWEEN { fn CURDATE() } AND DATEADD(day; 3; GETDATE())
ELSE BETWEEN { fn CURDATE() } AND DATEADD(day; 1; GETDATE())
答案 0 :(得分:4)
怎么样:
where (datepart(weekday, getdate()) = 6 and
datecol between cast(getdate() as date) and cast(getdate() + 3 as date)
) or
(datepart(weekday, getdate()) <> 6 and
datecol between cast(getdate()as date) and cast(getdate() + 1as date)
)
注意:我不喜欢使用between
日期/日期时间。 Aaron Bertrand有一个很好的blog帖子解释了这一点。 BETWEEN
对于日期是安全的,因此我将离开逻辑,因为您似乎已经指定了它。