Суммируйте секунды между двумя столбцами даты и времени для нескольких записей в Ecto - PullRequest
0 голосов
/ 29 августа 2018

Можно ли использовать запрос Ecto для суммирования общего количества секунд между двумя столбцами naive_datetime?

В приведенном ниже примере время выполнения каждого элемента в selected_items - это количество секунд между created_at и completed_at.

Я хотел бы создать запрос, который возвращает общее время выполнения для всех записей в selected_items.

total_seconds = Repo.one(from item in selected_items,
      select: sum(***Seconds between item.completed_at and item.created_at***)

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Я смог получить то, что мне было нужно, используя фрагмент.

total_seconds = Repo.one(from item in selected_items,
      select: sum(fragment("? - ?", item.completed_at, item.created_at))
0 голосов
/ 30 августа 2018

Вы можете использовать Ecto.Query.dynamic/2:

select = dynamic([item], item.completed_at - item.created_at)
from item in selected_items, select: sum(^select)
...