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 日がなく、2 月の最終日が 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 |
+----+----------------------------+-------+
意図がより明確になることを願っています。