在我的数据库中我有一个列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),(我想......)但我无法弄明白!有什么建议吗?
答案 0 :(得分:1)
使用DAYOFWEEK(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
答案 1 :(得分:0)
希望以下查询有效,您可以修改WHERE条件以包含其他日期
示例:case_number> = 0 AND 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