Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据天数获取下一个日期-mysql_Mysql - Fatal编程技术网

根据天数获取下一个日期-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); 尝试(可以

我是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);
    
    尝试(可以进一步优化,但首先可以检查它是否有效):


    你能精确地回答你的问题吗?号码是工作日?是的,是一周中的第几天。介于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;