根据天数获取下一个日期-mysql
我是mysql的新手,我想写一个查询,在那里我输入了天数,它给出了下一周/本周的下一个日期 示例:根据天数获取下一个日期-mysql,mysql,Mysql,我是mysql的新手,我想写一个查询,在那里我输入了天数,它给出了下一周/本周的下一个日期 示例: 如果今天是星期一(2018年1月1日),我通过了5次考试,那么我想要星期五(2018年1月5日) 如果今天是星期五(2018年1月5日),我通过了1,那么我想要星期一(2018年1月8日) 我已经写了一个基本的查询,但我不能使它通用 查询: select date_add(now(), interval dayofweek(now()) + (6 - @day_num) day); 尝试(可以
select date_add(now(), interval dayofweek(now()) + (6 - @day_num) day);
尝试(可以进一步优化,但首先可以检查它是否有效):
你能精确地回答你的问题吗?号码是工作日?是的,是一周中的第几天。介于1和7之间。如果今天是一周中的第2天,而我通过了第2天,您是想要今天还是下周的第2天?我假设您的情况是一周中的第一天是星期一,而不是星期天。@MadhurBhaiya是的,是星期一。谢谢。它似乎起作用了。只有当前日期除外,例如,对于2,它返回的是今天的日期,而不是下一个日期。@Rohit所以您要输入2作为日期?是的<代码>设置@day_num=2;选择工作日(CURDATE())+1>=@day_num THEN(CURDATE()+INTERVAL(6-工作日(CURDATE()))day)+INTERVAL@day_num day ELSE(CURDATE()+INTERVAL(0-工作日(CURDATE()))day)+INTERVAL(@day_num-1)day END作为下一个日期@Rohit我在我的系统上运行了上述查询。我得到了
2018-11-13
。这是绝对正确的。请仔细检查。谢谢。今天的问题是由于服务器的日期时间。我今天早上就知道了。。谢谢你在这方面的帮助。干杯
SELECT
CASE WHEN WEEKDAY(CURDATE()) + 1 >= @day_num
THEN (CURDATE() + INTERVAL (6 - WEEKDAY(CURDATE())) DAY) + INTERVAL @day_num DAY
ELSE (CURDATE() + INTERVAL (0 - WEEKDAY(CURDATE())) DAY) + INTERVAL (@day_num-1) DAY
END AS next_date;