У меня есть модель пользователя в моем проекте 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. – guitarman