检查db的“now()”和时间戳是否与3天不同

时间:2018-01-12 02:52:10

标签: postgresql datetime elixir ecto

我正在使用Phoenix和Ecto。我需要检查“now()”和某个日期之间的差异是否小于3天。我正在尝试这个:

    {diff_days, {_, _, _}} = Ecto.DateTime.to_erl(my_user.signed_up_at) |> :calendar.time_difference(:calendar.universal_time)
    if diff_days <= 3 do
      # good to go
      # ....
    end

但是,对于超过3天和1分钟的日期,这不是吗?对不起?

检查它是否不超过3天或72小时的通用方法是什么?

在我的数据库中,signed_up_at的类型为timestamp without timezone

1 个答案:

答案 0 :(得分:0)

使用DateTime.diff/3

three_days_in_seconds = 3 * 24 * 60 * 60
case DateTime.diff(DateTime.utc_now, my_user.signed_up_at, :second) do
  good when good < three_days_in_seconds ->
    # good to go
  _ ->
    # skip
end

请注意,:second是调用DateTime.diff/3时第三个参数的默认值,可能会被省略。