我需要获取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
答案 0 :(得分:2)
最后,我在AVG中使用TIME_TO_SEC
和TIMEDIFF
找到了自己的答案:
User.where(id: 3)
.average('TIME_TO_SEC(TIMEDIFF(updated_at, created_at))')
.to_f
=> 10303.0