在Rails中如何获取两个datetime列的减法的平均值

时间:2018-08-06 08:04:28

标签: mysql sql ruby-on-rails ruby-on-rails-4

我需要获取updated_at - created_at个日期时间列的平均值

我尝试过这种方式,但是它没有按预期工作:

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

1 个答案:

答案 0 :(得分:2)

最后,我在AVG中使用TIME_TO_SECTIMEDIFF找到了自己的答案:

User.where(id: 3)
    .average('TIME_TO_SEC(TIMEDIFF(updated_at, created_at))')
    .to_f
 => 10303.0