在同一天创建的记录数

Rai*_*ner 3 ruby sql activerecord ruby-on-rails ruby-on-rails-3

我正在尝试创建一个应该是这样的数组:

[ [created_at date * 1000, count record for that date],
  [created_at date * 1000, count record for that date], 
  [created_at date * 1000, count record for that date] ]
Run Code Online (Sandbox Code Playgroud)

由于分钟,小时和秒,created_at日期不完全相同.我在想是否有可能在create to上更改created_at时间00:00:00

我试过这个,

@kliks = Klik.all.map{|klik| [(klik.created_at.to_i * 1000), 1]}
Run Code Online (Sandbox Code Playgroud)

但是我还没想出那些在同一天创建的记录.此循环也为每个记录创建一个数组,我不想要总和的重复.

Jor*_*ing 5

Rails有ActiveRecord :: Calculations,它可以在数据库级别完成这类工作.你应该使用它.在这种情况下,count是您想要的方法:

@kliks = Klik.count( :group => "DATE( created_at )" )
Run Code Online (Sandbox Code Playgroud)

这相当于以下SQL:

SELECT *, COUNT(*) FROM kliks
GROUP BY DATE( created_at )
Run Code Online (Sandbox Code Playgroud)

DATE()功能是MySQL的改变日期时间(如created_at,例如2012-02-27 10:08:59)到纯日期(例如2012-02-27).无需将事物转换为整数或乘以分钟和秒,也无需map在Ruby中使用或使用任何其他方法.