2009-06-19 39 views
0

我們有一個網格控件,允許用戶在不同字段中篩選文本。其中一些字段可能是時間戳,如created_at和updated_at。現在在Rails中按日期子字符串篩選

,用戶可以做很多不同類型的過濾器,包括>,<,> =,< =等,所以,從控制遇到的查詢可能類似於:

「created_at> 2009「或」created_at> = 2006並created_at < = 2010「。

數據庫不會將年份識別爲有效的時間戳,也不會自動將它們轉換爲有效的時間戳。有沒有任何插件或慣用方法來完成一年或更好的時間戳的一部分,對含義進行最佳猜測,並將其轉換爲可用的數據庫時間戳?

回答

3

看一看下面的項目

例如,searchlogic支持像下面的一個條件。

Post.all(:conditions => { :hour_of_created_at => 9 }) 
+0

searchlogic看起來mintox - 我認爲它會做的是這裏所需要的東西,雖然我還沒有實現它自己。 – mlambie 2009-06-20 09:23:04

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]) 

也許這樣的事情?

1

你可以使用Ruby的時間類

Time.local(2010) # => Fri Jan 01 -0600 2010 

Time.gm(2010) # => Fri Jan 01 00:00:00 UTC 2010