如何在Rails中获得与给定年份匹配的行数?

时间:2014-04-12 17:39:29

标签: ruby-on-rails date calculated-columns

我有一个项目进度模型,我跟踪发布日期,我想只计算与给定年份匹配的项目。在这个具体案例中,我想知道2014年将推出多少项目。

看起来非常简单,而且我认为咖啡因尚未发现,但对于我的生活,我无法让这一点发生。非常感谢。

这样的事情:

@launch_this_year = Project.where(project.launch_date > 12/31/2014)

2 个答案:

答案 0 :(得分:1)

请尝试以下代码。

@launch_this_year = Project.where("extract(year from launch_at) = ?", 2014).count

答案 1 :(得分:0)

部分问题在于日期格式。使用YYYY-MM-DD代替MM / DD / YYYY。也是'launch_date>的日期2014年12月31日'建议2015年日期,而不是2014年。

@launch_this_year = Project.where('launch_date > ?', '2013-12-31').count

或者,您可以让rails使用DateTime.parse

为您转换日期格式
@launch_this_year = Project.where('launch_date > ?', DateTime.parse('12/31/2013')).count

要考虑的另一个项目是,在上述查询中,如果有2014和2015项目,则上述查询将包括两者。如果您想要严格的2014年项目,那么Bachan解决方案可以使用,或者您可以添加日期范围条件:

@launch_this_year = Project.where(launch_date: DateTime.parse('12/31/2013')..DateTime.parse('1/1/2015')).count
#=> SELECT COUNT(*) FROM `projects` WHERE (`projects`.`launch_date` BETWEEN '2013-12-31 00:00:00' AND '2015-01-01 00:00:00')