选择MySQL中一年前的记录。

36

我试图从我的数据库中获取所有早于1年前的记录列表,过期合同的字段具有以下信息。

expired_contract DATE NOT NULL

所以它需要采用以下格式的日期: 年-月-日,接下来是我无法使其工作的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这样的日期。

也许我需要在数据库中编辑一些内容吗?

寻求您的帮助,谢谢!


2
这个有帮助吗?https://dev59.com/-mnWa4cB1Zd3GeqPyDe_#12736181 - Jamie Bicknell
它正在运行,谢谢你! - Alex Grecu
3个回答

70

你需要使用“小于”而不是“大于等于”:

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

1
SELECT SUM(impressions) AS impressions FROM My_Contracte  where DATE(expired_contract) BETWEEN DATE_SUB( CURDATE( ) ,INTERVAL 1 YEAR ) AND CURDATE( )

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

1
是的,但是你的函数也使用了2017年或更早的年份。在Jens和Jamie的帮助下,我已经让它正常工作了。我也感谢你的帮助。 - Alex Grecu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接