检索按月分组的MySQL结果集

时间:2013-11-26 23:00:32

标签: 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)
)

我想查询所有已支付= 0的记录,但我希望结果是pay = 0的结果为真的。

例如,财务部门可以查看简短的记录列表,仅显示必要的月份。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

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,如果您想将日期发送到您的应用程序层,这样很方便,这样您仍然可以编写它作为日期(例如更改语言/显示格式)。