如果在工作日,MySQL会在列字段中添加天数

时间:2012-10-31 21:30:18

标签: mysql if-statement

我有一个名为pmday的参数,我希望,当它被消耗时,检查一天是在星期六或星期日,如果是,则显示星期一之后。

我是mySQL的新手,我正在运行SELECT语句以其他方式使用pmday。我可以创建一个显示星期一后一天的列,只有当这一天是在周末吗?

这是我一直在尝试(和失败)的例子。我不确定这是不是我不知道如何,select语句中的函数不被允许,或者一般格式化和使用逗号的问题。

谢谢!

SELECT
    pmday AS EnteredDate,
    IF DateFormat(pmday, '%W') = 'Saturday' then
         Date_Add('pmday', INTERVAL 2 DAY) AS FollowingMonday
    Else If  DateFormat(pmday, '%W') = 'Sunday'  then
         Date_Add('pmday', INTERVAL 1 DAY) AS FollowingMonday
    END IF;

3 个答案:

答案 0 :(得分:0)

SELECT
    pmday AS EnteredDate,
    CASE Date_Format(pmday, '%W')
        WHEN 'Saturday' THEN Date_Add(pmday, INTERVAL 2 DAY)
        WHEN 'Sunday' THEN Date_Add(pmday, INTERVAL 1 DAY)
        ELSE pmday
    END AS FollowingMonday
;

答案 1 :(得分:0)

你的if语句错了..

这对我有用......

set @pmday = current_date;


select 
    if(Date_Format(@pmday, '%W') = 'Saturday',
   Date_Add(@pmday, INTERVAL 2 DAY), 

    if(Date_Format(@pmday, '%W') = 'Sunday',
   Date_Add(@pmday, INTERVAL 1 DAY), @pmday)
);

答案 2 :(得分:0)

---如果选定日期是星期六或星期日,则找到下一个星期一

set @pmday = "2012-10-20";
select if(
           DAYOFWEEK( @pmday) = 1 or DAYOFWEEK( @pmday) = 7
           , DATE_ADD( @pmday, INTERVAL (9 - IF(DAYOFWEEK( @pmday)=1, 8, DAYOFWEEK( @pmday))) DAY) 
           , @pmday
          );