Elixir:如何获取Ecto查询的当前日期?

时间:2016-10-25 15:12:32

标签: elixir ecto

我不得不问这个有点开玩笑,但目前还不清楚最好的方法是什么。所以这可能会变得有点咆哮。但我觉得Elixir在这里缺乏认真态度。

我发现在当前日期再次使用Ecto查询当前日期非常复杂。例如get me every record where date column x contains a date before t之类的内容。

截至目前,我使用Erlang :calendar.universal_time(),将其传递给Ecto.DateTime.from_erl,再传递给Ecto.Date.cast

date = :calendar.universal_time() |> Ecto.DateTime.from_erl |> Ecto.Date.cast

请注意,我们还必须模式匹配实际日期,因为我们返回一个元组

{:ok, #Ecto.Date<2016-10-25>}

所以它是

{:ok, date} = :calendar.universal_time() |> Ecto.DateTime.from_erl |> Ecto.Date.cast

当然我可以使用Ecto.Date.cast!,但这又是你必须找到的东西,可能会有一些我不知道的缺点。

然后我可以构建查询。但我每次都要调用至少3个函数......

query = from m in Model, select: {m.name, m.email}, where: (m.canceled_to > ^date), order_by: [desc: m.inserted_at]
result = Repo.all(query)

那么我还有更好的方法吗?

1 个答案:

答案 0 :(得分:6)

要在Ecto中获取当前日期 - Ecto.Date.utc/0