有一个像一个列的表:mydate DATETIME
...
我有一个查询,例如:
SELECT SUM(foo), mydate FROM a_table GROUP BY a_table.mydate;
这将完整分组datetime
,包括小时和分钟.我希望通过日期YYYY/MM/DD
而不是日期来组建小组YYYY/MM/DD/HH/mm
.
有人知道怎么做吗?我仍然可以在我的代码中动态地执行它(我正在运行),但我正在清理垃圾代码,这可以通过SQL进行,我无法找到如何:(.
将日期时间转换为日期,然后使用以下语法进行GROUP BY:
SELECT SUM(foo), DATE(mydate) FROM a_table GROUP BY DATE(a_table.mydate);
或者您可以将别名作为@ orlandu63的别名建议:
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)
它将从特定日期的总和给出小时!