我希望查询所有年龄大于4的用户。我试过这个但是我无法获得用户date_of_birthday属性的年份。我们怎样才能获得一年或有任何简单的方法。
User.where('date_of_birth.year < ?',Time.now - 4)
答案 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