我们有一个网格控件,允许用户过滤不同字段中的文本。许多这些字段可能是时间戳,例如created_at和updated_at。
现在,用户可以执行许多不同类型的过滤器,包括>,<,> =,< =等等。因此,来自控件的查询可能如下所示:
“created_at> 2009”,或“created_at> = 2006和created_at< = 2010”。
数据库不会将年份识别为有效时间戳,rails也不会自动将其转换为有效时间戳。是否有任何插件或惯用方法可以完成一年或更好的部分时间戳,最好地猜测其含义,并将其转换为可用的数据库时间戳?
答案 0 :(得分:3)
查看以下项目
例如,searchlogic支持以下条件。
Post.all(:conditions => { :hour_of_created_at => 9 })
答案 1 :(得分:2)
created_at> 2009年强>
Post.all(:conditions => ["created_at > ?", Date.new(y = 2010, m = 1, d = 1).to_s])
created_at> = 2006
Post.all(:conditions => ["created_at >= ?", Date.new(y = 2006, m = 1, d = 1).to_s])
created_at< = 2010
Post.all(:conditions => ["created_at <= ?", Date.new(y = 2010, m = 12, d = 31).to_s])
或许这样的事情?
答案 2 :(得分:1)
你可以使用ruby的时间等级
Time.local(2010) # => Fri Jan 01 -0600 2010
或
Time.gm(2010) # => Fri Jan 01 00:00:00 UTC 2010