【发布时间】:2018-08-06 08:04:28
【问题描述】:
我需要得到updated_at - created_at datetime 列的平均值
我尝试过这种方式,但它没有按预期工作:
User.average('updated_at - created_at')
它给出了这个 sql 查询:
SELECT AVG(updated_at-created_at) FROM `users`
当我通过一个 ID 过滤得到一个对象时,它显示的结果与 user.updated_at - user.created_at 不同。这就是为什么我认为我的 sql 查询不正确。
User.where(id: 3).average('updated_at - created_at').to_f => 29183.0
user = User.find(3) # (created_at: "2018-07-25 09:58:56", updated_at: "2018-07-25 12:50:39")
user.updated_at - user.created_at => 10303.0
【问题讨论】:
-
在您认为输出错误的地方提供示例数据会有所帮助。
-
@skelwa 我添加了一个我想要实现的示例
-
@DeepakMahakale 不确定这种情况是否有帮助。我想做两列的减法,然后计算结果的平均值。
-
你可以尝试在平均值内使用 DATEDIFF(updated_at, created_at) 吗?
标签: mysql sql ruby-on-rails ruby-on-rails-4