首页 > 解决方案 > 根据天数获取下一个日期 - mysql

问题描述

我是 mysql 的新手,我想写一个查询,我在其中传递日期编号,它给了我下一个日期在即将到来的/当前的一周。

例子 :

  1. 如果今天是星期一(2018 年 1 月 1 日)并且我通过了 5,那么我想要星期五(2018 年 1 月 5 日)。
  2. 如果今天是星期五(2018 年 1 月 5 日)并且我通过了 1,那么我想要星期一(2018 年 1 月 8 日)。

我已经编写了一个基本查询,但我无法使其通用。

询问 :

select date_add(now(), interval dayofweek(now()) + (6 - @day_num)  day);

标签: mysql

解决方案


尝试(它可以进一步优化,但首先你可以检查它是否有效):

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;

推荐阅读