如何在 Elixir Ecto 中使用“between”创建 SQL
Posted
技术标签:
【中文标题】如何在 Elixir Ecto 中使用“between”创建 SQL【英文标题】:How to create a SQL using 'between' in Elixir Ecto 【发布时间】:2015-05-19 07:24:50 【问题描述】:我想使用 Elixir Ecto 中的“between”键创建一个 SQL。
我知道如何使用like
创建一个sql
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.**
我怎样才能以正确的方式做到这一点?
提前致谢!!
【问题讨论】:
【参考方案1】:我不认为 Ecto 提供了between
子句。你可以通过使用来完成你的任务
where: t.start_date >= ^start_date,
where: t.start_date <= ^end_date
【讨论】:
你的意思是start_date <= ^end_date
?
对于其他人,您可以将它们与and
组合成一行。 where: t.start_date >= ^start_date and t.start_date <= ^end_date
.【参考方案2】:
您可以使用fragment
来执行此操作。
where: fragment("? BETWEEN ? AND ?", t.date, ^start_date, ^end_date)
https://hexdocs.pm/ecto/3.1.4/Ecto.Query.API.html#fragment/1
【讨论】:
以上是关于如何在 Elixir Ecto 中使用“between”创建 SQL的主要内容,如果未能解决你的问题,请参考以下文章
Elixir ecto 2 创建 many_to_many 关联