MYSQL select 查询 return 月份列表作为 start/end 日期之间的字符串

MYSQL select query return list of months as string from between start/end date

合同中有两个主要字段 Startdate 和 Enddate table 我想将结果作为名为 description 的额外列来表示合同开始和结束之间的月份。请参阅下面的 table 和我需要的结果

Table : Contracts
------------------------------
ID | START      | END        |
------------------------------
1  | 2016-05-01 | 2016-07-31 |
2  | 2016-04-01 | 2016-08-31 |
3  | 2016-01-22 | 2016-02-25 |
------------------------------

这里我需要根据下面的格式得到结果,一个额外的字段代表使用 SELECT 查询的合同开始日期和结束日期之间的 range/list 个月。

Result (as per give format)
----------------------------------------------------------------------------------------
ID | START      | END        | Description      
----------------------------------------------------------------------------------------
1  | 2016-05-01 | 2016-07-31 | May-2016, Jun-2016, July-2016
2  | 2016-04-01 | 2016-07-31 | April-2016, May-2016, Jun-2016, July-2016
3  | 2016-01-22 | 2016-02-25 | January-2016, February-2016
----------------------------------------------------------------------------------------

上面的示例第一行 table 开始日期是 2016-05-01 (2016-May-01),结束日期是 2016-07-31 (2016-July-31) 所以这里给出了列表5 月 1 日至 7 月 31 日之间的月份和年份,因此描述将是 2016 年 5 月、2016 年 6 月、2016 年 7 月。

我尝试了很多查询仍然无法获得准确的 SQL 查询。

不知道如何做才能得到相同的结果,

有什么建议吗

提前致谢

下面的查询应该可以解决问题。

你的第二行输入和输出数据不同,我有运行输出数据

select id, DATE_FORMAT(start_Date, '%Y-%c-%d') as Start_Date,
       DATE_FORMAT(end_date,'%Y-%c-%d') as END_Date,
       group_concat( distinct(DATE_FORMAT(aDate, '%Y %M '))) as Descp
from (
     select ss.end_date - interval (a.a ) month as aDate from
     (select 0 as a union all select 1 union all select 2 union all select 3
     union all select 4 union all select 5 union all select 6 union all
     select 7 union all select 8 union all select 9) a, Contracts ss 
     ) mon, Contracts sa
where aDate between sa.start_date and sa.end_date
group by id;