20

我有一个从数据库列中获取的实例,Ecto.DateTime我需要检查该日期是否超过 5 分钟。

最好的方法是什么?

为了更清楚,这就是我在 ruby​​ 中需要的->

updated_at < (Time.now - 5.minutes)
4

1 回答 1

21

您可以使用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)
于 2015-08-31T10:35:12.680 回答