Elixir:如何获取 Ecto 查询的当前日期?
Elixir: How to get the current date for an Ecto Query?
我不得不问这个有点开玩笑,但真的不清楚最好的方法是什么。所以这可能会变成一个小小的咆哮。但我觉得 Elixir 在这里严重缺乏。
我发现获取当前日期以在 Ecto 中再次查询当前日期非常复杂。例如 get me every record where date column x contains a date before t
。
截至目前,我使用 Erlangs :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)
那么有没有我想念的更好的方法?
在 Ecto 中获取当前日期 - Ecto.Date.utc/0
我不得不问这个有点开玩笑,但真的不清楚最好的方法是什么。所以这可能会变成一个小小的咆哮。但我觉得 Elixir 在这里严重缺乏。
我发现获取当前日期以在 Ecto 中再次查询当前日期非常复杂。例如 get me every record where date column x contains a date before t
。
截至目前,我使用 Erlangs :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)
那么有没有我想念的更好的方法?
在 Ecto 中获取当前日期 - Ecto.Date.utc/0