如何按时间分组,不论时间如何?

时间:2011-12-04 14:00:05

标签: mysql sql ruby-on-rails-3 activerecord

我正在尝试按Date()进行分组。我有created_at列的3条记录:

2011-12-03 08:00:24, 2011-12-03 08:12:10, 2011-12-04 09:00:00

我想只按年,月,日分组,不分时间。所以对于上面的例子。它应该只返回两行:

2011-12-03 and 2011-12-04

我应该怎么做?

6 个答案:

答案 0 :(得分:8)

... group by date(date_time_column)

答案 1 :(得分:2)

这应该允许您按月和日分组

 SELECT group_by_column
      , DATE_FORMAT(created_at, '%Y')
      , DATE_FORMAT(created_at, '%m')
      , DATE_FORMAT(created_at, '%d')
   FROM my_table
  GROUP BY group_by_column

或者如果你想一起做这些。

 SELECT group_by_column
      , DATE_FORMAT(created_at, '%Y%m%d')
   FROM my_table
  GROUP BY group_by_column

答案 2 :(得分:2)

您是否尝试过以下操作?

SELECT 
    DATE(created_at) AS created_date 
FROM 
    my_table 
GROUP BY 
    created_date

答案 3 :(得分:2)

MySQL允许GROUP BY DATE(created_at)。这样就可以将ActiveRecord转换为.group(DATE(created_at))

事实上,Rails Guides on ActiveRecord querying中提供了这个确切的示例。

答案 4 :(得分:2)

您可以使用Date()函数 http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date

mysql> SELECT DATE('2003-12-31 01:02:03');
        -> '2003-12-31'

答案 5 :(得分:1)

尝试

   GROUP BY DATE(`date_column`)

Reference