【发布时间】:2017-01-16 20:16:34
【问题描述】:
我的 phoenixframework 项目中有一个用户模型,其生日属性包含 Timex.Ecto.Date 值。
defmodule MyProject.User do
use MyProject.Web, :model
schema "users" do
field :active, :boolean
field :birthday, Timex.Ecto.Date
field :login, :string
field :email, :string
field :password, :string, virtual: true
field :password_hash, :string
field :name, :string
field :nickname, :string
timestamps
end
# ... changeset and other code ...
end
现在我尝试找出所有将在未来 30 天内庆祝生日的用户。假设有一个出生日期为 1980-02-01 的用户记录。今天是2017-01-13。
我现在拥有的:
{:ok, date_from} =
Timex.local
|> Timex.Ecto.Date.cast
{:ok, date_to} =
Timex.local
|> Timex.add(Timex.Duration.from_days(30))
|> Timex.Ecto.Date.cast
MyProject.Repo(from(u in MyProject.User, where: u.birthday >= ^date_from, where: u.birthday <= ^date_to))
因为年份它不能工作。我如何构建 ecto 查询?
【问题讨论】:
-
虽然我不知道答案,但向社区询问您正在使用的数据库可能更有用。例如,如果您使用的是 SQL 数据库,请询问带有 SQL 标记的问题。一旦您知道如何进行原始查询,就应该相当直接地将其转换为 ecto。
-
哦抱歉,我忘了说我使用的是 PostgreSQL 数据库。
标签: postgresql elixir phoenix-framework ecto