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

标签 mysql sql date stored-procedures

在我的数据库中,我有 4 列案例:

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

我正在尝试创建一个基于当前日期查找下一个工作日的存储过程。
例如,如果星期三是 xx.xx.xxxx,情况 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()) 事实上,你在 CASE 中添加了一个 CASE。

根据星期几添加适当的天数到现在()

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

关于mysql - 使用 mysql 存储过程查找下一个特定工作日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22908650/

相关文章:

mysql - 如何将两条 SQL 语句合并为一条语句?

mysql - SHOW * FROM 列在 10 分钟内 - mysql 查询

sql - 在数据库的所有表、行和列中搜索字符串

c - 为什么 gmtime() 函数返回 NULL?

php - if语句放错地方了

mysql - 用于选择没有 2 个相同字段值的行的 codeigniter 查询

PHP 只从表中读取前 8 个字符

sql - 增量比较 Oracle 中两个表之间的多个值集或列表

javascript - 为什么 2/8888/2016 在 IE 和 Firefox 中是有效日期?

javascript - 获取 HTML5 日期时间本地精确值