使用 mysql 存储过程查找下一个工作日



在我的数据库中,我有一列 4 种情况:

  • 1:星期二
  • 2:星期三
  • 3:星期四
  • 4:星期五

IM 尝试创建一个基于当前日期查找下一个工作日的存储过程。
例如,如果是星期三 xx.xx.xx 和案例 1,则下周二将是下一周的 yy.yy.yyyy。这是硬性:)如果想要的工作日是第二天,则应选择下周的日期。

到目前为止,我有什么:

BEGIN
SELECT
    CASE case_number
    WHEN 1 THEN ''
    WHEN 2 THEN ''
    WHEN 3 THEN ''
    WHEN 4 THEN ''
    ELSE 'unknown'
    END
FROM customer
WHERE customer_id = customerId;
END

我在寻找" 当然:)之间的代码我知道我需要玩DATE_ADD(CURDATE(),INTERVAL x DAY),(我想..)但我无法弄清楚!有什么建议吗?

使用 DAYOFWEEK(now())事实上,你在箱子里唠叨了一个箱子。

根据星期几的数量,将适当的天数添加到now()

SELECT
    CASE case_number
    WHEN 1 THEN CASE DAYOFWEEK(now())
                 WHEN 0 THEN DATE_ADD(CURDATE(), INTERVAL x DAY)
                 WHEN 1 THEN DATE_ADD(CURDATE(), INTERVAL x DAY)
                 WHEN 2 THEN DATE_ADD(CURDATE(), INTERVAL x DAY)
    .....
                END
    WHEN 2 THEN ''
    WHEN 3 THEN ''
    WHEN 4 THEN ''
    ELSE 'unknown'
    END
FROM customer

希望下面的查询有效,您可以修改 WHERE 条件以包括其他日期

示例:case_number>=0 和 case_number<7(0 - 星期一....6 - 周日)

SELECT 
    CASE WHEN WEEKDAY(CURDATE()) <= case_number THEN
              DATE_ADD(CURDATE(), INTERVAL (7 + (case_number - WEEKDAY(CURDATE()))) DAY)
         ELSE
              DATE_ADD(CURDATE(), INTERVAL (7 - (WEEKDAY(CURDATE()) - case_number)) DAY)
    END
FROM customer WHERE case_number>= 1 AND case_number <= 4

最新更新