如何获取从过去60天到前几天的记录

时间:2013-05-17 05:12:43

标签: php mysql mysqli

我想获取年龄超过60天的所有记录。我有create_date列,请建议一个满足上述要求的查询

SELECT * FROM mytable WHERE create_date BETWEEN  DATE_SUB(NOW(), INTERVAL 60 DAY)  AND create_date >'60days'

得到了我的查询

正确的查询是

SELECT * FROM mytable WHERE create_date < DATE_SUB(NOW(), INTERVAL 60 DAY);

2 个答案:

答案 0 :(得分:2)

在SQL中,表达式

x BETWEEN a AND b

字面意思是

a <= x AND x <= b

如果a > b,无论如何都会产生空结果。

换句话说,订单确实很重要 - 只需确保在使用x BETWEEN a AND b时,a必须为&lt; = b

对你而言,它意味着交换日期(并修复其他一些错误):

SELECT * FROM mytable
WHERE create_date BETWEEN '2011-10-14'
          AND NOW() - INTERVAL 60 DAY

更新:关于使用函数DATE_SUB()DATE_ADD()的其他说明。

一般情况下,如果您需要比较大表中的日期,您应该不惜一切代价避免使用这些功能!现代MySQL支持使用标准+-运算符的日期算术,因此表达式

DATE_SUB(create_date, INTERVAL 60 DAY)

相当于

create_date - INTERVAL 60 DAY

这不仅更易于阅读,而且还允许服务器利用您为create_date列创建的可能索引。此加速不能应用于任何函数调用,如DATE_SUB() - MySQL不支持功能索引。

答案 1 :(得分:0)

尝试类似

的内容
select * from tablename where datediff(now(), date) > 60

我假设date存储在名为date的列中,您使用的是列名而不是date

希望它有效。