如何编写一个计算每月和每年行数的SQL查询?

Dav*_*own 4 php mysql vbulletin unix-timestamp

有没有人知道如何查询vbulletin数据库,以生成每月/每年注册数量的报告,以达到如下结果:

MM/YYYY      Count
01/2001  :   10
02/2001  :   12
...
...
Run Code Online (Sandbox Code Playgroud)

感谢下面的答案.我的最终版本如下:

SELECT 
  COUNT(*) as 'Registrations', 
  YEAR(FROM_UNIXTIME(joindate)) as 'Year',
  MONTH(FROM_UNIXTIME(joindate)) as 'Month'
FROM vbfuser
GROUP BY Year,Month
Run Code Online (Sandbox Code Playgroud)

Aro*_*eel 7

我不熟悉vBulletin的数据库结构,但你应该做这样的事情,假设你的用户表有一个日期/日期时间/时间戳created_datereg_timestamp列或类似的东西,使用MySQL的YEAR()MONTH()函数.

select 
    count(*) as count, 
    year(reg_timestamp) as year 
    month(reg_timestamp) as month
from users 
group by year, month;
Run Code Online (Sandbox Code Playgroud)

这将产生类似于此的东西:

+-------+-------+------+
| count | month | year |
+-------+-------+------+
|     4 |    11 | 2008 | 
|     1 |    12 | 2008 | 
|   196 |    12 | 2009 | 
|   651 |     1 | 2010 | 
+-------+-------+------+
Run Code Online (Sandbox Code Playgroud)

编辑:关于戴夫的评论: vBulletin的日期似乎以Unixtime格式存储.在这种情况下,只需将列包装,FROM_UNIXTIME将其转换为可读的MySQL日期:

select 
    count(*) as count, 
    year(from_unixtime(reg_timestamp)) as year 
    month(from_unixtime(reg_timestamp)) as month
from users 
group by year, month;
Run Code Online (Sandbox Code Playgroud)