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)
它会从一个特定的日子总结小时!