检索按月分组的MySQL结果集

检索按月分组的MySQL结果集,mysql,sql,Mysql,Sql,我有一张MySQL表 Create table temp_table ( Tmp_id int(10) auto_increment, paid tinyint default 0, date_received DATETIME NULL, PRIMARY KEY (Tmp_id) ) 我想查询所有paid=0的记录,但我希望结果是paid=0计算为true的月份 例如,财务部可以看到一个简短的记录列表,只显示必要的月份 感谢您的帮助。您可以使用以下内容获取月份和年份: SELECT YEAR

我有一张MySQL表

Create table temp_table (
Tmp_id int(10) auto_increment,
paid tinyint default 0,
date_received DATETIME NULL,
PRIMARY KEY (Tmp_id)
)
我想查询所有paid=0的记录,但我希望结果是paid=0计算为true的月份

例如,财务部可以看到一个简短的记录列表,只显示必要的月份


感谢您的帮助。

您可以使用以下内容获取月份和年份:

SELECT YEAR(Date_Received) AS `Year`,
       MONTH(Date_Received) AS `Month`,
       COUNT(*) AS Records
FROM   Temp_Table
WHERE  Paid = 0
GROUP BY YEAR(Date_Received), MONTH(Date_Received);
或者,如果您想将其保持为日期格式,您可以使用:

SELECT DATE_FORMAT(Date_Received,'%Y-%m-01') AS MonthStart
FROM   Temp_Table
WHERE  Paid = 0
GROUP BY DATE_FORMAT(Date_Received,'%Y-%m-01');

这将简单地将所有日期转换为月份的第一天,因此2013年11月的所有记录都将显示为2013-11-01,如果您想将日期发送到应用程序层,这样您仍然可以将其作为日期手动输入(例如更改语言/显示格式)。

您必须有一个月份列作为分组依据。这非常有效。有没有办法选择这个作为解决方案?我喜欢本机函数,这减少了我的代码工作量。谢谢Gareth!,虽然可能还没有过去,但有15分钟的时间限制?那太愚蠢了!如果用户明天才阅读答案怎么办((编辑:不要紧,我只是在15分钟后才读到)这仍然是一种奇怪的现象。我有一个声誉限制,阻止我对答案投票。将其标记为确认答案。