Mysql 如何获取从最近60天到前几天的记录
我想获取所有超过60天的记录。我有创建日期栏,请建议一个满足上述要求的查询Mysql 如何获取从最近60天到前几天的记录,mysql,Mysql,我想获取所有超过60天的记录。我有创建日期栏,请建议一个满足上述要求的查询 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); crea
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);
create_date
试试下面的方法
select * from tablename where datediff(now(), date) > 60
我假设date
存储在名为date
的列中,您使用列名而不是date
希望它能工作。在SQL中,表达式
x BETWEEN a AND b
字面意思
a <= x AND x <= b
更新:关于使用函数DATE\u SUB()
或DATE\u ADD()
的另一个注意事项
一般来说,如果您需要在大表中比较日期,您应该不惜一切代价避免使用这些函数!现代MySQL支持使用标准的+
和-
运算符进行日期运算,所以
DATE_SUB(create_date, INTERVAL 60 DAY)
相当于
create_date - INTERVAL 60 DAY
这不仅易于阅读,而且还允许服务器利用您为
create\u date
列创建的索引。这种加速不能应用于任何函数调用,如DATE\u SUB()
-MySQL不支持函数索引。您至少需要尝试一些东西。是的,我尝试过,但未能检索如果您显示了您尝试过的内容,那么如果create\u DATE
是DATE
,您可能会得到一些帮助,然后用create_date>'60days'
进行编辑是没有意义的-您无法将日期与间隔进行比较。如果表很大,此查询将非常慢。索引将没有帮助没有记录正在通过使用上面的查询获取查看我的更新答案。获取我的查询从mytable中选择*,其中创建了\u dateDATE\u SUB()
!
create_date - INTERVAL 60 DAY