mysql查询从两个日期获取月份名称列表

问题描述:

我想在两个日期之间创建一个月份名称列表。什么是通过mysql查询来完成的最佳方式。mysql查询从两个日期获取月份名称列表

Select start_date, end_date from table where id=123 

上面的查询结果 - 起始日期: '2016年1月15日' 结束日期: '2017年4月28日'

最终的结果应该是:

Jan-16 
Feb-16 
Mar-16 
...... 
...... 
...... 
Feb-17 
Mar-17 
Apr-17 

感谢帮助!

+0

你能提供样品的输入? –

+0

我通过查询“Select start_date,end_date from table where id = 123'来获取开始日期和结束日期值,但我不知道如何变换以获得上述结果。 – dCoder

+0

首先,编辑你的问题并添加这些信息,不要将它们置于评论中。那么,你能分享一下你正在查询的表格中的一些样本数据吗?它的结构也不错 –

没有一个时间需要现在去只是为了DATE_FORMAT搜索到这个"date(thisday)"

select CONCAT_WS('-',monthname(date(thisday)),substr(thisday from 9 FOR 2)) from 

(SELECT ADDDATE('2017-01-01', INTERVAL @i:[email protected]+1 DAY) AS thisday 
     FROM (
     SELECT a.a 
     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) AS a 
     CROSS JOIN (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) AS b 
     CROSS JOIN (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) AS c 
     ) a 
     JOIN (SELECT @i := -1) r1 
     WHERE 
     @i < DATEDIFF('2017-01-31', '2017-01-01')) as a 

一些结果:

January-18 
January-19 
January-20 
January-21 
January-22 
January-23 
January-24 
January-25 
January-26 
January-27 
January-28 
January-29 
+0

它不起作用。需要返回月份名称。 – dCoder