【问题标题】:Where date is later than日期晚于
【发布时间】:2017-04-25 08:37:25
【问题描述】:

我将日期存储为“d-m-Y H:i:s”。

我需要检查这个存储的日期是否晚于$limit_date 变量。 $limit_date 变量是当前日期的 -30 天,存储在“d-m-Y”中。

我原以为以下方法会起作用,但没有返回任何结果。

$limit_date = strtotime('-30 day');
$limit_date = date("d-m-Y", $limit_date);

$this->db->where('date_submitted >', $limit_date);

我的测试 date_submitted 是“25-04-2017 09:13:13”,$limit_date 返回“26-03-2017”。

【问题讨论】:

  • 在格式化$limit_date 时,您是否尝试过使用d-m-Y H:i:s 添加?您最好使用以 UNIX 时间格式格式化的日期,然后确定日期是否晚于存储的日期。
  • “我的测试 date_submitted 是 '25-04-2017 09:13:13' 而 $limit_date 返回 '26-03-2017'” – 你在比较 strings 这里是逐个字符发生的。第一个字符在两个值中都是 2,所以我们必须查看下一个 - 566 是比 5“更大”的字符,所以不匹配。 // 在你的表中使用适当的日期列类型,然后使用 MySQL 日期/时间函数来创建间隔进行比较。

标签: php mysql codeigniter-2 expressionengine


【解决方案1】:

试试这个:

$limit_date = strtotime('-30 day');
$limit_date = date("d-m-Y H:i:s", $limit_date);

$this->db->where('date_submitted >', $limit_date);

【讨论】:

    【解决方案2】:

    我认为您想将日期字段字符串更改为日期

    STR_TO_DATE(date_submitted, '%Y-%m-%d')

    $limit_date = date('Y-m-d', strtotime('-30 days'));
    
    $this->db->where('STR_TO_DATE(date_submitted, '%Y-%m-%d') >', $limit_date);
    

    【讨论】:

      【解决方案3】:

      在这段代码中,我们使用DateTimeDateIntervalDateInterval 减去您想要的确切天数。

      Try this code snippet here

      <?php
      ini_set('display_errors', 1);
      $days=30;
      $object = new DateTime("25-04-2017 09:13:13");//giving the date from which we want to subtract.
      $object->sub(new DateInterval("P".$days."D"));//passing the interval which we want to subtract
      echo $object->format("d-m-Y H:i:s");
      

      【讨论】:

        【解决方案4】:

        如果您不想弄乱小时:分钟:秒,我认为如果您将数据库中的 date_submitted 查询转换为 DATE 会更好

        例子:

        $limit_date = strtotime('-30 day');
        $limit_date = date("d-m-Y", $limit_date);
        $this->db->where('DATE(date_submitted) >', $limit_date);
        

        【讨论】:

          【解决方案5】:

          试试:

          WHERE date_submitted > DATE_ADD(CURDATE(), INTERVAL - 30 DAY) // for 30days
          

          WHERE date_submitted > DATE_ADD(NOW(), INTERVAL - 30 DAY) // for 30*24hours
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-12-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多