我不得不问这个有点开玩笑,但目前还不清楚最好的方法是什么。所以这可能会变得有点咆哮。但我觉得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)
那么我还有更好的方法吗?