В Rails, как получить среднее значение вычитания из двух столбцов datetime

0

Мне нужно получить среднее значение updated_at - created_at столбцов datetime

Я пробовал этот путь, но он не работает, как я ожидал:

User.average('updated_at - created_at')

Он дает этот запрос sql:

SELECT AVG(updated_at-created_at) FROM 'users'

Когда я фильтрую по одному идентификатору, получая один объект, он показывает мне другой результат, чем 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
    посмотрим, поможет ли это stackoverflow.com/a/7368597/4758119
  • 0
    Предоставление образцов данных, если вы считаете, что получаете неправильный вывод, поможет.
Показать ещё 4 комментария
Теги:
ruby-on-rails-4

1 ответ

2

Наконец, я нашел свой собственный ответ, используя TIME_TO_SEC и TIMEDIFF внутри AVG:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню