使用条件日期时间进行计数

时间:2013-11-15 16:29:00

标签: ruby-on-rails ruby ruby-on-rails-2

我正在尝试计算所有已过期的政策> =今天

  date_end >= TODAY

这是我的表

|policies|
  |id|  |num|    |date_ini|  |date_end|
   1    12484    2013-04-01   2014-05-01
   2    41511    2012-04-01   2013-05-01
   3    14441    2013-05-01   2014-06-01

有2个值未过期

这是我的控制器

 @policies =Policy.count(:conditions =>['date_end >= Date.now'])

我试过

 @policies =Policy.count(:conditions =>['date_end >= Date.today'])

 @policies =Policy.count(:conditions =>['date_end >= curtime()'])

请有人帮助我吗?

我真的很感激帮助

3 个答案:

答案 0 :(得分:4)

它不起作用,因为Date.today在String中,因此它不被评估为实际Date。您可能还希望使用Date.current来考虑配置的时区。

请改为尝试:

@policies = Policy.count( :conditions => ['date_end >= ?', Date.current] )

答案 1 :(得分:1)

如果date_end存储为DATE类型的属性,您可以这样做:

Policy.where("date_end >= ?", Date.today).count

或者如果它存储为字符串,只需将Date.today转换为字符串:

Policy.where("date_end >= ?", Date.today.to_s).count

答案 2 :(得分:0)

问题在于,当您调用Date.today时,您将返回格式“星期五,2013年11月15日”,这与“2014-04-02”无法比较。要以相同的格式获取它们,请使用

Date.today.to_s