对不起,如果这听起来像是一个非常基本的问题,但由于某种原因,今天我真的很难理解这一点。我有一个date_added
列的数据库表,格式为2014-09-30 20:39:17
,我有一个网页,其中包含用户的过滤选项。基本上我想使用变量来选择不同的日期范围,如下所示:
SELECT * FROM table WHERE date_added = /* EVERYTHING POSTED TODAY */
SELECT * FROM table WHERE date_added = /* EVERYTHING POSTED WITHIN LAST 7 DAYS */
SELECT * FROM table WHERE date_added = /* EVERYTHING POSTED WITHIN LAST 30 DAYS */
我需要投入什么才能让这些变量发挥作用?
答案 0 :(得分:6)
您可以使用CURDATE()
和非常简单的INTERVAL
算术。
在以下示例中,假设查询是在2014-10-21 22:25:28
执行的:
SELECT * FROM table WHERE date_added >= CURDATE()
-- >= 2014-10-21 00:00:00
SELECT * FROM table WHERE date_added >= NOW() - INTERVAL 24 HOUR
-- >= 2014-10-20 22:25:28
SELECT * FROM table WHERE date_added >= CURDATE() - INTERVAL 7 DAY
-- >= 2014-10-14
SELECT * FROM table WHERE date_added >= CURDATE() - INTERVAL 30 DAY
-- >= 2014-09-21