mysql中有没有办法按月分组,但有自定义开始日期。
假设我想按月计算登录次数,但条件是该月从用户注册时开始。
例如,用户A于 1 月 30 日注册,用户B于 1 月 15 日注册
我应该将登录名分组如下:
* User A: January 30th - February 28th, March 1st - March 30th, March 31 - April 30 and so on and so forth
* User B: January 15th - February 14th, February 15th - March 14th and so on and so forth
我想我需要使用类似的东西,DATE_ADD('2013-01-30', INTERVAL 1 MONTH);
但我似乎无法找到一种方法来进行分组。
更新
@GarethD:你说得对,这是一个错字
一般来说,月份应该从下个月的同一天或下个月的最后一天开始,以防第一天是不可能的,所以如果您在第 31 天注册,则月份周期将从第 30 天开始没有 31 天,二月的最后一天是 28 日或 29 日
例子:
鉴于
id 1 registered on 2012-12-16
id 2 registered on 2013-01-29
和下表
+----+------------+
| id | date |
+----+------------+
| 1 | 2013-01-15 |
| 1 | 2013-01-16 |
| 1 | 2013-01-17 |
| 1 | 2013-01-17 |
| 2 | 2013-03-20 |
| 2 | 2013-03-21 |
| 2 | 2013-03-28 |
| 2 | 2013-03-29 |
| 2 | 2013-03-30 |
+----+------------+
结果应该是
+----+----------------------------+-------+
| id | range | count |
+----+----------------------------+-------+
| 1 | 2012-12-16, 2013-01-15 | 1 |
| 1 | 2013-01-16, 2013-02-15 | 3 |
| 2 | 2013-02-2[8|9], 2013-03-28 | 3 |
| 2 | 2013-03-29, 2013-04-28 | 2 |
+----+----------------------------+-------+
我希望现在的意图更清楚了。