我试图从数据库中选择日期,然后将其分组为月和年,例如:
May 2019
June 2018
etc.
数据库 -日期是日期类型
我有此代码:
SELECT datum, count(*) FROM zapasy GROUP BY datum
哪一天都能做到,但我不想这么做,所以我搜索了如何将它按月和年分组,而不仅仅是几天
SELECT datum, count(*) FROM zapasy GROUP BY MONTH(datum), YEAR(datum)
我想到了这个,但是,我收到了这个愚蠢的错误
#1055-SELECT列表的表达式#1不在GROUP BY子句中,并且包含未聚合的列'zapasy_db_test.zapasy.datum',该列在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by
不兼容
我不知道代码有什么问题
请给我一些建议。 谢谢
答案 0 :(得分:1)
您需要选择要分组的项目。
所以
SELECT MONTH(datum), YEAR(datum), count(*) from ... group by MONTH(datum), YEAR(datum)
而不是基准,否则您选择的日期列中将有一天,您将从基准中获得一天,而这与计数和组无关,并且会出错,或者分组根本不起作用。
答案 1 :(得分:0)
我注意到您期望的输出格式为May 2019 etc.
,您知道DATE
数据类型就是这样,yyyy-mm-dd
,因此,如果您确实要提取该格式,您可以尝试以下操作:
SELECT DATE_FORMAT(datum, '%b %Y') AS 'Monthyear', COUNT(*)
FROM zapasy
GROUP BY Monthyear;