我正在尝试计算所有已过期的政策> =今天
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()'])
请有人帮助我吗?
我真的很感激帮助
答案 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