在rails中如何获得两个datetime列的减法的平均值

ztmd8pv5  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(247)

我需要得到平均值 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
wljmcqd8

wljmcqd81#

最后我找到了自己的答案 TIME_TO_SEC 以及 TIMEDIFF 内部平均值:

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

相关问题