如何使用Elixir Ecto中的"between"创建SQL

王志軍*_*王志軍 9 between elixir ecto

我想使用Elixir Ecto中的关键字"between"创建一个SQL.

我知道如何使用创建一个SQL like

where: like(t.descript, ^some_description)

但是,当我尝试以同样的方式做到这一点 like

where: between(t.start_date, ^start_date, ^end_date),

我收到了"无效"错误信息

** (Ecto.Query.CompileError) `between(t.start_date(), ^start_date, ^end_date)` is not a valid query expression.**
Run Code Online (Sandbox Code Playgroud)

我怎么能以正确的方式做到这一点?

提前致谢!!

sha*_*evy 15

我不认为Ecto提供了一个between条款.你可以通过使用来完成你的任务

where: t.start_date >= ^start_date,
where: t.start_date <= ^end_date
Run Code Online (Sandbox Code Playgroud)

  • 只为其他人,你可以将这些与`和`组合成一行.`where:t.start_date> = ^ start_date和t.start_date <= ^ end_date`. (7认同)

小智 8

您可以使用它fragment来执行此操作。

where: fragment("? BETWEEN ? AND ?", t.date, ^start_date, ^end_date)
Run Code Online (Sandbox Code Playgroud)

https://hexdocs.pm/ecto/3.1.4/Ecto.Query.API.html#fragment/1