获取用户年份大于Time.now - 4的用户

时间:2016-05-27 13:40:42

标签: ruby-on-rails postgresql activemodel

我希望查询所有年龄大于4的用户。我试过这个但是我无法获得用户date_of_birthday属性的年份。我们怎样才能获得一年或有任何简单的方法。

User.where('date_of_birth.year < ?',Time.now - 4)

1 个答案:

答案 0 :(得分:0)

即使您的date_of_birth是日期数据类型,您仍然可以根据DateTime或仅Time进行搜索。

因此,您可以在用户调制解调器中搜索生日所在的位置,使用户至少使用4年。这不仅会考虑他们的出生年份,还会考虑月和日。

2.3.1 :001 > User.where('birthday < ?', DateTime.now - 4.years).size
   (0.6ms)  SELECT COUNT(*) FROM `users` WHERE (birthday < '2012-05-27 13:51:49.162909')
 => 51

您可以在此处看到我的示例中的birthday属性是Date数据类型,而不是时间。

2.3.1 :003 > User.where('birthday < ?', DateTime.now - 4.years).first.birthday
  User Load (0.8ms)  SELECT  `users`.* FROM `users` WHERE (birthday < '2012-05-27 13:52:09.802729') ORDER BY `users`.`id` ASC LIMIT 1
 => Mon, 02 May 1960