【问题标题】:MYSQL SELECT records older than 1 year agoMYSQL SELECT 记录早于 1 年前
【发布时间】:2015-12-29 11:09:13
【问题描述】:

我尝试从我的数据库中获取早于 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 月 1 日,我想查看早于 1 年前的日期,所以从 2014 年 9 月 30 日开始,而不是显示像 2015 年 10 月 1 日、2016 年 10 月 1 日这样的日期。

也许我必须在数据库中编辑一些东西?

寻求您的帮助,谢谢!

【问题讨论】:

标签: php mysql date


【解决方案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() ;
    

    【讨论】:

    • 是的,但您的函数也需要从 2017 年左右开始。我得到了 Jens 和 Jamie 的帮助。我也感谢你的帮助。
    【解决方案3】:
    SELECT SUM(impressions) AS impressions FROM My_Contracte  where DATE(expired_contract) BETWEEN DATE_SUB( CURDATE( ) ,INTERVAL 1 YEAR ) AND CURDATE( )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多