MySQL TIMESTAMP列 - 按日分组

时间:2017-11-04 19:47:05

标签: mysql sql

我正在努力按日分组MySQL TIMESTAMP列而没有任何特定的where子句。

目标是输出数据库中的单个日期列表,目前我收到有关非聚合列的错误。

  

SELECT列表不在GROUP BY子句中,并且包含非聚合列created_at,它在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by不兼容。

我的查询是:

SELECT created_at FROM audits GROUP BY DATE('created_at');

3 个答案:

答案 0 :(得分:1)

date()select中使用group by。或者只使用select distinct

SELECT DISTINCT DATE(created_at)
FROM audits;

我应该注意您的查询有两个错误。表达式DATE('created_at')采用字符串的DATE()值。在这种情况下,date()会返回NULL,这不是很有用。

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

答案 1 :(得分:0)

在当前查询中,没有必要的组,因为您没有使用sum或count函数。我认为您目前的日期时间存储在created_at字段中。你想要的是将其转换为类似'CAST(created_at AS date)之类的日期格式。这给你没有时间的日子。完整查询:

Select CAST(created_at AS Date) AS New_Date FROM audits

答案 2 :(得分:0)

您可以尝试以下查询:

SELECT created_at FROM audits GROUP BY date_format('created_at','%d');

SELECT date_format('created_at','%d')as created_at_month,count(*) FROM audits GROUP BY date_format('created_at','%d');

similarly use // for year : '%Y' // for month : '%m' // for hour : '%H'