MYSQL SELECT 记录早于 1 年

2022-08-30 13:39:41

我试图从我的数据库中获取1年前的所有记录的列表,expired_contract字段有下一个信息。

expired_contract DATE NOT NULL

因此,它采用下一种格式的DATE:YEAR-MM-DD,接下来我有sql,我无法让它悲伤地工作。

$sql = "SELECT * 
        FROM My_Contracte 
        WHERE expired_contract >= DATE_SUB(NOW(),INTERVAL 1 YEAR) 
        ORDER BY id_contract DESC";

我尝试了很多“WHERE”命令,但没有一个像我预期的那样工作。你能帮我让它工作吗?我正在寻找这个大约5个小时,我需要确切的命令才能让它工作。

$sql让我有所收获,但拿错了,我得到的日期是:2015-10-01,2016-10-01和日期,如2014-09-30没有出现。

基本上我想显示这样的日期:

如果今天是2015-10-01,我想看到比1年前更早的日期,所以从2014-09-30开始,而不是显示像2015-10-01,2016-10-01这样的日期。

也许我必须编辑数据库中的某些内容吗?

寻求您的帮助,谢谢!


答案 1

您必须使用低于而不是大于或等于:

$sql = "SELECT * FROM My_Contracte WHERE expired_contract < DATE_SUB(NOW(),INTERVAL 1 YEAR) 

答案 2
SELECT * FROM My_Contracte WHERE (expired_contract NOT BETWEEN DATE_SUB(CURDATE(),INTERVAL 1 YEAR) AND CURDATE()) and expired_contract<=NOW() ;

推荐