Ecto查询日期范围

问题描述 投票:0回答:1

我必须根据模型中的时间戳查询日期范围。到目前为止我所尝试的是

str="2017-12-18"
{:ok, ed}=Ecto.Date.cast(str)
ed= ed |> Ecto.Date.from_erl  |> NaiveDate.from_erl!
Repo.all(from l in Log, where: l.inserted_at == ^ed)

然而,postgres中的日期是日期时间的形式,例如2017-12-18 19:58:01.414

但我只想查询日期而不是时间。但是,如果我使用Ecto.DateTimeNaiveDateTime并在字符串中传递精确的日期时间,它的工作原理。但我只想在日期上匹配。怎么可能呢?谢谢

elixir phoenix-framework ecto
1个回答
3
投票

您可以使用fragment将字段强制转换为日期,然后比较:

Repo.all(from l in Log, where: fragment("?::date", l.inserted_at) == ^ed)
© www.soinside.com 2019 - 2024. All rights reserved.