在Rails3中,如何检索具有今年日期的所有记录? 我想要检索我所有的"项目" " date"是今年。
我怀疑它会类似于:
@projects_this_year = Project.where(:date.Time.year == Time.now.year)
or
@projects_this_year = Project.where(:date >= ?, Time.now.year)
我正在阅读文档,但还没有完全理解这一点。
答案 0 :(得分:3)
你可以做这样的事情(假设有一个MySQL数据库):
@projects_this_year = Project.where("year(date) = ?", Time.now.year)
或更好:
@projects_this_year = Project.where("year(date) = year(utc_timetamp())")
不需要加载时间库。
供参考:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
修改
如果您希望它与数据库无关,那么您可以执行以下操作:
@projects_this_year = Project.where("date >= ?", Time.now.at_beginning_of_year)
答案 1 :(得分:0)
如果您经常需要特定的月份或年份,或者通过扩展@ David的答案,通过params,您也可以在模型中实现这种动态:
def self.get_year(date)
# sanitize if params
safe = ['2011', '2012', '2013']
if safe.include?(date)
where("year(created_at) = ?", Time.parse("#{date}-01-01 11:11:11 -0500").year)
else
scoped
end
end
EX:
Product.get_year('2012')
注意要使其在heroku上运行,请更改以下内容:
where("date_part('year', created_at) = ?", Time.parse("#{date}-01-01 11:11:11 -0500").year
http://www.java2s.com/Code/PostgreSQL/Date-Timezone/datepartyeardate.htm