MySQL时间戳列-按天分组
我正在努力将MySQL时间戳列按天分组,而不使用任何特定的where子句 目标是在数据库中输出单个日期的列表,目前我得到一个关于非聚合列的错误 选择列表不在GROUP BY子句中,包含在处创建的未聚合列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(
,该列在功能上不依赖于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'