2014-04-12 32 views
1

我有一個項目時間表模型,我跟蹤發佈日期,我想只計算與給定年份匹配的項目。在這個具體的例子中,我想知道2014年將會推出多少個項目。如何獲得與Rails中給定年份匹配的行數?

看起來很簡單,我想咖啡因還沒有被擊中,但對於我的生活,我不能得到這一個發生。非常感激。

事情是這樣的:

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

回答

1

請嘗試以下代碼。問題的

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

輝煌!謝謝。感謝幫助。提取物對於我想用日期做的其他事情會很方便。 – jakeatwork

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 

或者,你可以讓軌道轉換日期格式您使用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') 
相關問題