Sql, где атрибут t.date меньше текущего года - PullRequest
0 голосов
/ 17 января 2012

В моем приложении на Rails 3 я пытаюсь найти текущих учеников по названию их школы и дате их окончания по отношению к текущему году.Я могу сделать успешный поиск для пользователей без даты выпуска (см. Ниже), но я хочу искать пользователей, у которых атрибут даты окончания меньше или больше, чем текущий год.К вашему сведению, я использую PostgreSQL.

Используемые мной поля настраиваются следующим образом:

t.string :high_school
t.date :hs_grad_year

Вот находка, с которой я сейчас работаю:

<%= pluralize(Profile.where(:high_school => "#{@highschool.name}").where("hs_grad_year IS NOT NULL").count, "person") %>

Ответы [ 3 ]

1 голос
/ 17 января 2012
Profile.
  where(:high_school => @highschool.name).
  where("hs_grad_year < ? OR hs_grad_year > ?", Date.today.year, Date.today.year)
1 голос
/ 17 января 2012

Есть пара проблем с вашим кодом (получение записей из вашей базы данных должно выполняться в контроллере, а не в представлении, и вы используете имена старших классов в качестве внешних ключей вместо поля id, например), но для ответа на ваш вопрос:

Profile.where %'
    high_school = ? AND
    EXTRACT(year FROM hs_grad_year) < EXTRACT(year FROM current_date)
  ',
  @highschool.name
1 голос
/ 17 января 2012

Требуется .where("hs_grad_year < extract(year from current_date)").

В Postgres current_date - текущая дата (yyyy-mm-dd), а функция extract вытягивает из нее только одну часть этой даты.,Вы можете прочитать больше о функциях даты и времени в Postgres здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...