从 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 |
+---------------------+------------+------------+
我创建了查询,它获取包含当前月份的前 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 |
+---------------------+------------+------------+