SQL不包括从日期开始的周末天数

时间:2014-09-11 15:17:31

标签: sql database date mdm

我正在尝试提取当前日期后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上执行此操作?我认为我的日期格式可能有误,但我发现很难看到解决方案。

1 个答案:

答案 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)

;

如果您碰巧有假日日期列表,您也可以将其纳入。