类似的东西:
SELECT MONTH(*date?*)
FROM
//Not sure what goes here
LIMIT 0,6
我知道这很简单,但我想知道如何获得过去六个月的清单,以防万一我需要加入它。如果获取过去的数据并使用:
,则非常有用IFNULL(数据,0)
答案 0 :(得分:2)
select month(DATE_SUB(now(), INTERVAL 6 MONTH)) month_6,
month(DATE_SUB(now(), INTERVAL 5 MONTH)) month_5,
month(DATE_SUB(now(), INTERVAL 4 MONTH)) month_4,
month(DATE_SUB(now(), INTERVAL 3 MONTH)) month_3,
month(DATE_SUB(now(), INTERVAL 2 MONTH)) month_2,
month(DATE_SUB(now(), INTERVAL 1 MONTH)) month_1
输出
month_6 month_5 month_4 month_3 month_2 month_1
9 10 11 12 1 2
如果您希望它包含当前月份,则只需从5开始,然后转到0而不是6到1。
如果您想要行,请执行以下操作:
select month(DATE_SUB(now(), INTERVAL 6 MONTH))
union select month(DATE_SUB(now(), INTERVAL 5 MONTH))
union select month(DATE_SUB(now(), INTERVAL 4 MONTH))
union select month(DATE_SUB(now(), INTERVAL 3 MONTH))
union select month(DATE_SUB(now(), INTERVAL 2 MONTH))
union select month(DATE_SUB(now(), INTERVAL 1 MONTH))
输出
9
10
11
12
1
2
答案 1 :(得分:1)
这并不比dcp这样的解决方案更好,但它可以让您在几个月内获得更多控制权。您可以使用1-6创建表:
create table intervals ( i int );
insert into intervals values (1), (2), (3), (4), (5), (6);
然后执行:
select month(date_sub(now(), interval intervals.i month)) month from intervals;