首页 > 解决方案 > 对部分 MySQL 日期时间字段进行分组

问题描述

我认为这是有效的,因为它在我测试它的那天给出了当前(也是唯一的)条目的结果,但是现在有几天的条目,结果不是我需要或预期的。

SELECT DATE_FORMAT(DateField, '%M %h, %Y') AS `Date`, SUM(NumberCount) AS Counts 
FROM tablename 
GROUP BY DATE_FORMAT(DateField, '%M %h, %Y') 
ORDER BY `Date`

正在给

March 04, 2019  2 
March 06, 2019  2 
March 11, 2019  3

而表包含

2019-03-07 18:15:05 1
2019-03-07 18:21:58 1
2019-03-08 16:45:05 2
2019-03-08 23:19:00 1
2019-03-08 23:19:01 2

所以我期待

March 07, 2019  2
March 08, 2019  5

任何想法如何获得预期的结果?

标签: mysqlsql

解决方案


只需使用该date功能。您真的需要将日期格式化为字符串吗?

SELECT DATE(DateField) AS `Date`, SUM(NumberCount) AS Counts 
FROM tablename 
GROUP BY DATE(DateField) 
ORDER BY `Date`;

如果您确实使用DATE_FORMAT(),请不要包括该月应该是哪一天的小时数。您可能想要: ''%M %d, %Y'.


推荐阅读