Mysql - 按月查询月份组之间的记录

时间:2011-01-17 15:29:56

标签: mysql

我有一张表,我需要从中检索数据。 该表有一个日期字段-tbl_date - 我需要的是,当我从日期和2011年2月选择2010年1月作为Todate时,它应显示这两个日期之间的所有记录,以及每个月组的个别结果。

赞 - 结果应显示为

2010年1月 记录1值
记录2值

2010年2月 记录1值
记录2值

.........

2011年2月 记录1值
记录2值

任何人都能帮助我吗? 谢谢

Sathish所在

2 个答案:

答案 0 :(得分:0)

不错的问题,这是一个未经测试的解决方案:

SELECT *,
       YEAR(date) as year,
       MONTHNAME(date) as month
FROM table
WHERE date BETWEEN date1 AND date2
ORDER BY date ASC

答案 1 :(得分:0)

查询非常简单:

SELECT field1, field2, field3 FROM myTable 
 WHERE tbl_date BETWEEN @startdate AND @enddate;

快速获取正确的数据(因为它可以使用tbl_date字段上的索引)。唯一棘手的问题是将正确的值添加到@startdate@enddate变量中。对于您的示例,它们必须是2010-01-012011-02-28(即第一个月的开始和上个月的结束)。

另一点是返回的数据如下所示:

Record 1 values from January 2010
Record 2 values from January 2010
Record 3 values from February 2010
Record 3 values from February 2010
Record 4 values from February 2010
Record 4 values from March 2010

没有月份标题行说'2010年1月'和'2010年2月',分解每个部分。 SQL数据查询在返回那种数据时很糟糕(主要行有20个数据字段,而其他行只有一个)。我建议使用应用程序(例如php)获取数据并在显示中插入这些标题,而不是试图将它们包含在从数据库返回的记录集中。