我似乎无法弄清楚如何只提取本周的提醒,任何建议都会受到赞赏。
$query = ("SELECT * FROM contacts WHERE reminder >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) ORDER BY firstname") or die ('Error: ' .mysql_error());
答案 0 :(得分:0)
非常天真的做法:
WHERE YEARWEEK(reminder) = YEARWEEK(NOW())
。它有效,但它不会在reminder
上使用索引(我相信有一个索引)。此外,将为每条记录执行YEARWEEK
。正确的方法是使用WHERE reminder >=[start_date] and reminder <= [end_date]
(或reminder BETWEEN [start_date] AND [end_date]
)之类的查询,其中[start_date]和[end_date]分别代表当前周的第一天和最后一天。我认为在客户端计算这些日期更容易,但也可以在mysql上编写一个返回所需日期的函数。