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)
但是我还没想出那些在同一天创建的记录.此循环也为每个记录创建一个数组,我不想要总和的重复.
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中使用或使用任何其他方法.
| 归档时间: |
|
| 查看次数: |
322 次 |
| 最近记录: |