2013-01-18 80 views
1

如何比較只有使用Rails和ActiveRecord的時間值?例如,查找在3:00 PM之後創建的所有行?如何在兩次之間搜索?

我試過使用Time.parse,但他們似乎期待完整的DateTime值,而不是Time(11:00 PM等)。

我基本上尋找兩個日期之間存在的所有行,然後是兩次之間。例如,在「3:00 PM」之後創建的「21/01/2012」和「23/02/2012」之間創建的所有行。日期部分似乎工作正常,但我似乎無法獲得時間部分工作沒有普通的SQL。

+0

只是爲了澄清什麼似乎是一個假設:'時間'包含日期和時間組件,就像'DateTime'類。學習兩者之間的差異留作研究工作。 –

回答

0

從我瞭解你申請的功能,從您的SQL日期時間屬性提取時間。像select HOUR(created_at) ...

ActiveRecord無法做到這一點,但寶石squeel它在Ruby中。

Person.select{coalesce(name, '<no name given>')} 

但是沒有什麼比在普通SQL中做這個更好。

+0

感謝您的支持,我們將對此進行調查。 – Chris

0

你可以做這樣的事情:

User.where("created_at > ? and created_at < ?", Time.now - 3.days, Time.now) 
+0

感謝您的回覆,不幸的是,這不是我所追求的。我需要在指定時間後開始的兩個日期之間的所有記錄。例如,在本財政年度下午5點之後註銷的所有人等等。通常,對於直接SQL,您只需要施加日期時間值,我很好奇是否有軌道方式來執行此操作?謝謝你的回答,但我很欣賞這種努力。 – Chris

+0

你的意思是這樣的:'User.all.select {| u | u.created_at.h> 15}'? – Ch4rAss

+0

請注意看起來像'created_at>的邏輯?和created_at <?'。你有一個條件,不允許準確的時間匹配。如果是4點,'created_at'是4點,那麼你永遠不會匹配它。使用'created_at> =?'或'created_at <=?'。 –