我正在尝试提取当前日期后2天的日期,除非在当前日期之后两天是周末的情况下,在这种情况下我会查看当前日期后4天的日期。我正在使用Data Studio,并且没有任何sql函数(如dateadd)可以使用它。
我知道我可以使用这个拉动来获得我想要的日期:
select event_end_date from mdmins11.contract where event_end_date between (current date +1.9 days) and (current date + 2.1 days);
但这并不排除周末。我试图在数学上这样做:
select event_end_date
case(
when (current date + 2 days) = ('2014-09-06' + (7 days * int)) or ('2014-09-07' + (7 days * int))
then set @w = (current date + 4 days)
else set @w = (current date + 2 days)
)
from mdmins11.contract where event_end_date = @w;
在这里,我试图找到星期六和星期日之后的日期,以防万一(当前日期+2)在周末登陆。这根本不起作用。有没有人知道如何在不使用函数的情况下在sql上执行此操作?我认为我的日期格式可能有误,但我发现很难看到解决方案。
答案 0 :(得分:1)
我找到了答案!对于处于相同情况的任何人:
select dayofweek(current date) as day_number,
event_end_date
from mdmins11.contract
where (dayofweek(event_end_date) = 6 /*Friday*/
and date(event_end_date) < current_date + 3 days
and date(event_end_date) >= current_date)
or (dayofweek(event_end_date) in (1,2,3,4,5,7) /*All other days of week*/
and date(event_end_date) < current_date + 2 days
and date(event_end_date) >= current_date)
;
如果您碰巧有假日日期列表,您也可以将其纳入。