Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何获取从最近60天到前几天的记录_Mysql - Fatal编程技术网

Mysql 如何获取从最近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

我想获取所有超过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);
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