Ответ 1
Вы можете сделать это с помощью datetime_add/3, используя отрицательное значение в качестве аргумента count
:
from u in User,
where: u.reset_password_sent_at > datetime_add(^Ecto.DateTime.utc, -5, "minute")
Если вам нужно сделать это без использования запроса, вы можете использовать функции в : calendar модуль erlang:
ecto_5_mins_ago =
Ecto.DateTime.utc
|> Ecto.DateTime.to_erl
|> :calendar.datetime_to_gregorian_seconds
|> Kernel.-(60 * 5)
|> :calendar.gregorian_seconds_to_datetime
|> Ecto.DateTime.from_erl
Ecto.DateTime.compare(u.reset_password_token, ecto_5_mins_ago)