我有一个项目进度模型,我跟踪发布日期,我想只计算与给定年份匹配的项目。在这个具体案例中,我想知道2014年将推出多少项目。
看起来非常简单,而且我认为咖啡因尚未发现,但对于我的生活,我无法让这一点发生。非常感谢。
这样的事情:
@launch_this_year = Project.where(project.launch_date > 12/31/2014)
答案 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')