【发布时间】:2026-01-03 09:10:02
【问题描述】:
我不得不问这个问题有点开玩笑,但目前还不清楚最好的方法是什么。所以这可能会变成一个小小的咆哮。但是我有一种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.Date.utc/0不适合你吗? - hexdocs.pm/ecto/Ecto.Date.html#utc/0 -
哈。那是我要找的那个……谢谢。