2012-05-15 139 views
0

我想搜索某个月份的所有声明。 “declaration_date”是一个日期时间属性。我有这个,但它失败了,有什么想法?从日期时间获取月份

declaration = Declarations.all(:conditions => ['declaration_date.strftime("%-m") = 2') 
+0

它依赖于SQL方言。请标记您的DBMS。或者,您可以将所有记录和过滤器放入Ruby中,但速度要慢得多。 – Amadan

回答

0

你想在特定年份的一个月内申报吗?如果是这样,请尝试如下所示:

time_range = (DateTime.new(2001,2,3) - 1.month)..DateTime.new(2001,2,3) 
declaration = Declaration.where('declaration_date' => time_range) 

您可以按照此技术在几年内的同一个月内获取声明。

又见,活动记录查询接口文档http://guides.rubyonrails.org/active_record_querying.html

+0

这效果很好,谢谢 – John

+0

欢迎您! – novemberkilo

0

我期待的strftime返回字符串的11.3节,和你与整数2.尝试使用字符串比较是比较“2”。

declaration = Declarations.all(:conditions => ["'declaration_date.strftime("%-m") = '2'") 
相关问题