mySQL:检查今天的日期是否是周末,并设置为最接近的工作日

时间:2015-04-15 23:14:20

标签: mysql date

如何检查今天的日期是否为周末,如果是,则设置为SAME月份内最接近的工作日?使用SQL。

2种情景:

  1. 如果周末是21日,那么它将被设置为20日,星期五(工作日)

  2. 如果周末是1号,那么它将被设置为星期一(工作日)的第3天

1 个答案:

答案 0 :(得分:1)

如果您将表格架构包含在一个更具针对性的响应中,那将会很不错,但通常您要寻找的是:

select d, case when dayofweek(d) in (1,7) then 'weekend' else 'weekday' end as 'day type',
          if(dayofweek(d) in (1,7),
            if(day(d) = 1 and dayofweek(d) = 1,
               d + interval 1 day,
               if(day(d) = 1 and dayofweek(d) = 7,
                  d + interval 2 day,
                    if(dayofweek(d) = 1,
                       d + interval 1 day,
                       d - interval 1 day
                    )
               )
             ), d
           ) nearest_week_day
  from test;

Here's a demo

可能有更好的方法 - 但这有效。您可能需要稍微扩展查询以处理该月最后一天的星期日(工作日= 1)。