MySQL / SQL:仅在date时间列上按date分组

有一个列像表: mydate DATETIME

我有一个查询,如:

 SELECT SUM(foo), mydate FROM a_table GROUP BY a_table.mydate; 

这将按完整的datetime时间分组,包括小时和分钟。 我只希望在YYYY/MM/DD的date,而不是YYYY/MM/DD/HH/mm

有人知道怎么做吗? 我仍然可以这样做(因为我atm),在我的代码dynamic,但我清理垃圾代码,这可以通过SQL我只是无法找出如何:(。

使用以下语法将date时间转换为date,然后使用GROUP BY:

 SELECT SUM(foo), DATE(mydate) FROM a_table GROUP BY DATE(a_table.mydate); 

或者你可以使用group by别名@ orlandu63build议:

 SELECT SUM(foo), DATE(mydate) DateOnly FROM a_table GROUP BY DateOnly; 

虽然我觉得这对演出没有什么影响,但是会更清楚些。

要么:

 SELECT SUM(foo), DATE(mydate) mydate FROM a_table GROUP BY mydate; 

效率更高(我想)。因为你不必每行投两次mydate。

我发现我需要按月份和年份进行分组,所以以上都不适合我。 相反,我用date_format

 SELECT date FROM blog GROUP BY DATE_FORMAT(date, "%m-%y") ORDER BY YEAR(date) DESC, MONTH(date) DESC 
 SELECT SUM(No), HOUR(dateofissue) FROM tablename WHERE dateofissue>='2011-07-30' GROUP BY HOUR(dateofissue) 

它会从一个特定的日子总结小时!