【问题标题】:PHP MySQL query shows the current date of the table by date before 1 monthPHP MySQL查询按1个月前的日期显示表的当前日期
【发布时间】:2018-06-22 14:27:42
【问题描述】:

我将创建一个通知系统,在截止日期前 1 个月通知。 我在显示与当前日期一致的日期时遇到问题。 我想显示仅在截止日期前 1 个月截止日期的今天出现。

我的表 = 通知:

+------+------------+------------+
| id   | name       | deadline   |
+------+------------+------------+
| 01   | Daniel     | 2018-02-13 |
| 02   | Elwin      | 2018-02-12 |
| 03   | Dika       | 2018-02-13 |
+------+------------+------------+

例如:今天的日期 = 2018-01-13
报告表我想要什么:

+------+------------+------------+------------+
| id   | name       | deadline   | alert_now  |
+------+------------+------------+------------+
| 01   | Daniel     | 2018-02-13 | 2018-01-13 |
| 03   | Dika       | 2018-02-13 | 2018-01-13 |
+------+------------+------------+------------+

我在 codeigniter 模型中的查询:

public function notification(){
        $query=$this->db->query('SELECT *, DATE_SUB(deadline, INTERVAL 1 MONTH) as alert_now FROM notif WHERE now() = DATE_SUB(deadline, INTERVAL 1 MONTH)');
        return $result=$query;
    }

注意:对不起,我的英语很差。谢谢。

【问题讨论】:

  • 我猜deadline 2018-01-13 for Dika 在您的预期结果中是错误的?
  • 哦,对不起,我的意思是 | 03 |迪卡 | 2018-02-13

标签: php mysql sql codeigniter date


【解决方案1】:

假设你的截止日期是日期类型 而不是 now() (date time) 你应该使用 curdate() (date)

  public function notification(){
          $query=$this->db->query('SELECT *, DATE_SUB(deadline, INTERVAL 1 MONTH) as alert_now 
                    FROM notif WHERE curdate() = DATE_SUB(deadline, INTERVAL 1 MONTH)');
          return $result=$query;
      }

如果截止日期是日期时间,那么你应该得到日期部分,例如:

  date(DATE_SUB(deadline, INTERVAL 1 MONTH))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多