Mysql 返回距离当前日期超过一年的日期的SQL查询

Mysql 返回距离当前日期超过一年的日期的SQL查询,mysql,sql,Mysql,Sql,我一直在尝试获取一个查询,该查询将从表中获取一个日期字段,并且只显示日期超过一年(相对于当前日期)的结果 我正在使用PHPMyAdmin进行这些查询。时间字段的数据类型为“日期”(yyyy-mm-dd) 到目前为止,我掌握的代码是 SELECT table1.time FROM table1 WHERE table1.time > UNIX_TIMESTAMP(ADDDATE(NOW(),INTERVAL -52 WEEK)) 但是查询返回表中的每一行,包括不到一年的行 我尝试过类似于W

我一直在尝试获取一个查询,该查询将从表中获取一个日期字段,并且只显示日期超过一年(相对于当前日期)的结果

我正在使用PHPMyAdmin进行这些查询。时间字段的数据类型为“日期”(yyyy-mm-dd)

到目前为止,我掌握的代码是

SELECT table1.time
FROM table1
WHERE table1.time > UNIX_TIMESTAMP(ADDDATE(NOW(),INTERVAL -52 WEEK))
但是查询返回表中的每一行,包括不到一年的行

我尝试过类似于
WHERE SELECT table 1.time

但这只会返回
检查与您的MariaDB服务器版本相对应的手册,以了解在第3行的“LIMIT 0,25”附近使用的正确语法,我不理解这些错误


非常感谢您的帮助。

最简单的方法可能是使用:


最简单的方法可能是使用:


您可能应该执行
CAST(…AS DATE)
而不是
UNIX\u时间戳(…)
;比较运算符应该是
在计算的日期之后查找日期。

您可能应该执行
CAST(…AS DATE)
而不是
UNIX\u时间戳(…)
;比较运算符应该是
在计算的日期之后查找日期

最简单的方法是检查当前年份,并将表中的数据与当前年份数据进行比较

SELECT table1.time FROM table1 WHERE YEAR(table1.time) = YEAR(CURDATE()) 

最简单的方法是检查本年度,并将表中的数据与本年度数据进行比较

SELECT table1.time FROM table1 WHERE YEAR(table1.time) = YEAR(CURDATE()) 

这将在大小适中的表上执行得非常差;在字段(如table1.time)上使用函数(如YEAR)需要进行完整的表扫描,从而抵消了任何索引好处。这将在大小适中的表上执行得非常差;在字段(如table1.time)上使用函数(如YEAR)需要进行一次完整的表扫描,否定了任何索引的好处。谢谢,这是我有限的知识中最有用和最容易理解的。清除并成功了!谢谢,这是我有限的知识中最有用和最容易理解的。清除并成功了!