0

我有一个名为 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;
4

3 回答 3

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
;
于 2012-10-31T21:48:48.800 回答
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)
);
于 2012-10-31T21:49:24.773 回答
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
          );
于 2012-10-31T21:55:07.820 回答