从sql

时间:2017-02-27 09:07:20

标签: php mysql sql innodb

我创建了Query,它可以获取包含当前月份的前12个月数据。我想要从上个月开始的12个月。我不明白,所以任何人都可以帮助我。

create_data >= DATE_SUB(CURDATE(), INTERVAL 12 month) 

2 个答案:

答案 0 :(得分:1)

截至上个月的12个月:

create data between DATE_SUB(CURDATE(), INTERVAL 13 month)
                and DATE_SUB(CURDATE(), INTERVAL 1 month)

答案 1 :(得分:1)

WHERE create_date >= CURDATE() - INTERVAL DAY(CURDATE() -1) DAY
                               - INTERVAL 12 MONTH
  AND create_date  < CURDATE() - INTERVAL DAY(CURDATE() -1) DAY

DAY(CURDATE())备份到上个月结束。

-1是将其转移到本月的第一天。

- INTERVAL 12 MONTH可以追溯到12个月。

使用>=<可以防止在结束时多花一天或几秒钟。

检查:

SELECT NOW(),
   CURDATE() - INTERVAL DAY(CURDATE() -1) DAY
             - INTERVAL 12 MONTH  AS start,
   CURDATE() - INTERVAL DAY(CURDATE() -1) DAY

+---------------------+------------+------------+
| NOW()               | start      | end        |
+---------------------+------------+------------+
| 2017-02-27 15:31:09 | 2016-02-01 | 2017-02-01 |
+---------------------+------------+------------+