Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何仅使用mysql(无php)获取过去6个月的数字_Mysql - Fatal编程技术网

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

如何仅使用mysql(无php)获取过去6个月的数字,mysql,Mysql,比如: SELECT MONTH(*date?*) FROM //Not sure what goes here LIMIT 0,6 我知道这很简单,但我想知道如何获得过去六个月的清单,以防我需要加入其中。如果获取过去的数据并使用以下方法,则非常有用: IFNULL(数据,0) 输出 month_6 month_5 month_4 month_3 month_2 month_1 9 10 11 12 1 2 9 1

比如:

SELECT MONTH(*date?*)
  FROM 
   //Not sure what goes here
LIMIT 0,6
我知道这很简单,但我想知道如何获得过去六个月的清单,以防我需要加入其中。如果获取过去的数据并使用以下方法,则非常有用:

IFNULL(数据,0)

输出

month_6 month_5 month_4 month_3 month_2 month_1
      9      10      11      12       1       2
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))
输出

month_6 month_5 month_4 month_3 month_2 month_1
      9      10      11      12       1       2
9
10
11
12
1
2
输出

month_6 month_5 month_4 month_3 month_2 month_1
      9      10      11      12       1       2
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))
输出

month_6 month_5 month_4 month_3 month_2 month_1
      9      10      11      12       1       2
9
10
11
12
1
2

并不是说这真的比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;

并不是说这真的比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;

表中是否有日期或时间戳列?如果是,使用WHERE子句获取所需的行,如果不是,我认为mysql不会将日期/时间数据保存到元数据中的记录中。表中是否有日期或时间戳列?如果是,使用WHERE子句获取所需的行,如果不是,我认为mysql不会将日期/时间数据保存到元数据中的记录中。这会将其放在列而不是行中。这很有效,但他可能想要rows@ocdcoder:是的。此外,这是一个硬编码的解决方案,它应该涉及一些编程语言来生成查询,如果op每次不需要固定的月数,那么我想加入它们,所以我需要它们成行。太好了!这正是我想要的。谢谢你。看起来很简单。只是想知道,如果6个月的需求更改为50:-,您的解决方案将如何工作。这将把它放在列中,而不是行中。这很有效,但他可能想要rows@ocdcoder:是的。此外,这是一个硬编码的解决方案,它应该涉及一些编程语言来生成查询,如果op每次不需要固定的月数,那么我想加入它们,所以我需要它们成行。太好了!这正是我想要的。谢谢你。似乎很简单。只是好奇如果6个月的要求改为50,你的解决方案会如何工作:-)我删除了完全相同的答案:-)然后会取消删除一会儿。获得我的+1,因为我做得很好;-)我删除了完全相同的答案:-)然后将取消删除一会儿。获得我的+1,因为我做得很好;-)