从 sql 获取前 12 个月

get previous 12 month from sql

我创建了查询,它获取包含当前月份的前 12 个月数据。我想要上个月的 12 个月。我不明白,所以任何人都可以帮助我解决这个问题。

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

截至上个月的 12 个月:

create data between DATE_SUB(CURDATE(), INTERVAL 13 month)
                and DATE_SUB(CURDATE(), INTERVAL 1 month)
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 |
+---------------------+------------+------------+