如何使用mysql获取过去6个月的数字(没有php)

时间:2012-03-23 20:44:50

标签: mysql

类似的东西:

SELECT MONTH(*date?*)
  FROM 
   //Not sure what goes here
LIMIT 0,6

我知道这很简单,但我想知道如何获得过去六个月的清单,以防万一我需要加入它。如果获取过去的数据并使用:

,则非常有用
  

IFNULL(数据,0)

2 个答案:

答案 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;