MySQL时间戳列-按天分组

MySQL时间戳列-按天分组,mysql,sql,Mysql,Sql,我正在努力将MySQL时间戳列按天分组,而不使用任何特定的where子句 目标是在数据库中输出单个日期的列表,目前我得到一个关于非聚合列的错误 选择列表不在GROUP BY子句中,包含在处创建的未聚合列,该列在功能上不依赖于GROUP BY子句中的列;这与sql\u mode=only\u full\u group\u by不兼容 我的问题是: SELECT created_at FROM audits GROUP BY DATE('created_at'); 在选择和分组依据中使用date(

我正在努力将MySQL时间戳列按天分组,而不使用任何特定的where子句

目标是在数据库中输出单个日期的列表,目前我得到一个关于非聚合列的错误

选择列表不在GROUP BY子句中,包含在处创建的未聚合列
,该列在功能上不依赖于GROUP BY子句中的列;这与sql\u mode=only\u full\u group\u by不兼容

我的问题是:

SELECT created_at FROM audits GROUP BY DATE('created_at');
选择
分组依据
中使用
date()
。或者只需使用
选择distinct

SELECT DISTINCT DATE(created_at)
FROM audits;
我应该注意到,您的查询有两个错误。表达式
DATE('created_at')
采用字符串的
DATE()
值。在此上下文中,
date()
返回
NULL
,这是没有用的


即使您删除了单引号(这可能是发布的工件),您仍然会得到您声明的错误。
SELECT DISTINCT DATE(created_at)
SELECT DATE(created_at)
/
groupby
将解决该问题。

在当前查询中,由于未使用求和或计数函数,因此不需要按分组。我认为您当前在created_at字段中存储了日期时间。您需要将其转换为日期格式,类似于“cast(created_at AS date)”。这给了你没有时间的日子。完整查询:


从审核中选择CAST(创建日期为AS Date)作为新日期

您可以尝试以下查询:

按日期从审核组中选择创建日期格式('created_at','%d')

选择日期格式('created_at','%d')作为每月创建的日期格式,按日期从审核组中选择计数(*)格式('created_at','%d');

类似地使用
//年份:'%Y'
//月份:'%m'
//小时:'%H'