从当前一周的星期一到下一个星期日选择日期

时间:2019-10-30 15:33:01

标签: mysql select

我已经做出了这个查询,并且能够从当前星期的星期一开始从表中获取日期。我的意图是,获取的日期是从星期一到下一个星期日。以下是我的查询

SELECT * 
FROM spec_roaster
WHERE DATE(date)
    BETWEEN DATE_SUB(DATE(NOW()), INTERVAL (WEEKDAY(NOW())+ 7) % 7 DAY)
        AND DATE_ADD(DATE(NOW()), INTERVAL (WEEKDAY(NOW())+ 7) % 7 DAY)
ORDER BY date ASC

返回的结果是:

enter image description here

我尝试更改DATE_ADD的时间间隔,但总是回到本周的星期四。有什么方法可以更改时间间隔,以便它将日期返回到下一个星期日?我尝试过

INTERVAL 6 - (WEEKDAY(NOW()) - 4 + 7) % 7 DAY)

但是没有任何变化,我也尝试了DATEDIFF,但这给了我语法错误。我希望听到一些有关如何解决该问题的见解。预先谢谢你!

1 个答案:

答案 0 :(得分:1)

以下查询将为您提供Y-m-d格式的星期日。

SELECT curdate() + Interval 6 - weekday(curdate()) DAY;

要获取星期一,您可以使用

SELECT curdate() - Interval weekday(curdate()) DAY;

因此,基本上,您需要使用这两个日期并获取它们之间的所有记录。因此您的查询将是

SELECT * 
FROM spec_roaster
WHERE DATE BETWEEN 
(curdate() - Interval weekday(curdate()) DAY) 
AND 
( SELECT curdate() + Interval 6 - weekday(curdate()) DAY )