我已经做出了这个查询,并且能够从当前星期的星期一开始从表中获取日期。我的意图是,获取的日期是从星期一到下一个星期日。以下是我的查询
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
返回的结果是:
我尝试更改DATE_ADD的时间间隔,但总是回到本周的星期四。有什么方法可以更改时间间隔,以便它将日期返回到下一个星期日?我尝试过
INTERVAL 6 - (WEEKDAY(NOW()) - 4 + 7) % 7 DAY)
但是没有任何变化,我也尝试了DATEDIFF,但这给了我语法错误。我希望听到一些有关如何解决该问题的见解。预先谢谢你!
答案 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 )