php mysql查询按1个月前的日期显示表的当前日期

jw5wzhpr  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(370)

我将创建一个通知系统,在截止日期前1个月通知。显示与当前日期重合的日期时出现问题。我想表明,似乎只有从截止日期1个月前截止日期今天。
my tabel=如果:

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

例如:date today=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;
    }

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

6qftjkof

6qftjkof1#

假设deadline是date类型而不是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;
      }

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

date(DATE_SUB(deadline, INTERVAL 1 MONTH))

相关问题