Mysql按月查询

Nis*_*ani 3 mysql group-by monthcalendar

我希望做一些像从表中获取所有行的事情

where date >='2012-05-05' and date<='2012-07-20'
Run Code Online (Sandbox Code Playgroud)

我希望MySQL返回"group by"明智增量的行

2012-05-05 to 2012-06-05(incerement 1 month)
2012-06-06 to 2012-07-06(increment 1` month)
and remaining 2012-07-07 to 2012-07-20 (group the remaining 14 days)
Run Code Online (Sandbox Code Playgroud)

我如何编写我的查询来实现相同的目标?

谢谢...

Zan*_*ien 5

尝试此解决方案:

您可以通过TIMESTAMPDIFF()函数GROUP BY从参数minimum(2012-05-05)+ 1到每行中的日期经过的月数:

GROUP BY TIMESTAMPDIFF(MONTH, '2012-05-05' + INTERVAL 1 DAY, date)
Run Code Online (Sandbox Code Playgroud)

我们为您的最小参数+1天的原因是:

  • 2012-05-05到了2012-06-040个月,但......
  • 2012-05-052012-06-051个月

^因此,2012-06-05当我们实际想要将它们与它们分组时,所有行将与已经过了0个月的日期分开.


编辑:我摆弄周围这种解决方案不仅通过了一个月的间隔分组,也显示每个区间的日期.

看看这个:

SQLFiddle演示