0

したがって、過去 12 か月間の登録数を正しく表示するクエリがあります。ここに表示があります: 過去 2 年間の月ごとの登録数

1--17    
2--12    
3--17    
4--8    
5--9    
6--8    
7--15    
8--20    
9--12    
10--14    
11--13    
12--14

しかし、私は6月にこれを実行しているので、最後の月は「1」ではなく5月の読み取り可能な日付を言う必要があります。代わりに欲しい:

May--17
Apr--12
March--17
.
.
.

これが私の現在のMYSQLです:

SELECT MONTH(create_date) as month , COUNT(create_date) as count 
FROM `users` 
WHERE create_date >= NOW() - INTERVAL 1 YEAR 
GROUP BY MONTH(create_date)

GROUP By で次のように FORMAT_DATE() を使用する必要があると想定しました。

GROUP BY FORMAT_DATE(MONTH(create_date, '%M'))

そして、それは私の読める月を与えるでしょうが、SQLステートメントはそれが正しくないと報告しています. これを達成する方法を知っている人はいますか?

4

2 に答える 2

1

これを試して:

SELECT DATE_FORMAT(create_date, '%M') AS month, COUNT(create_date) AS count
FROM users
WHERE create_date >= NOW() - INTERVAL 1 YEAR
GROUP BY MONTH(create_date);

結果は次のようになります。

+-----------+-------+
| month     | count |
+-----------+-------+
| January   |     1 |
| February  |     1 |
| March     |     1 |
| April     |     1 |
| May       |     2 |
| June      |     2 |
| July      |     1 |
| August    |     1 |
| September |     1 |
| November  |     1 |
| December  |     1 |
+-----------+-------+
于 2015-06-28T17:15:10.773 に答える
0

STR_TO_DATE() を使用して数値を日付に変換し、MONTHNAME() で戻すことができます

SELECT MONTHNAME(create_date(6, '%m')) as month , COUNT(create_date) as count 
FROM `users` 
WHERE create_date >= NOW() - INTERVAL 1 YEAR 
GROUP BY MONTH(create_date)
于 2015-06-28T17:13:52.467 に答える