2011-08-23 101 views
4

這發生在Sqlite上。我可能錯過了一些東西,但我無法弄清楚究竟是什麼。在Rails控制檯中按日期查找記錄

控制檯輸出

>> date = Task.first.date 
=> Tue, 16 Aug 2011 
>> Task.find(:all, :conditions => {:date => date}) 
=> [] 
>> Task.find(:all, :conditions => ['date = ?', date]) 
=> [] 
>> Task.find(:all, :conditions => ['date IS ?', date]) 
=> [] 

模式

create_table "tasks", :force => true do |t| 
    t.date  "date" 
end 

回答

2

這不是一個完整的答案,但希望將把你放心,你的語法是正確的

我敲了一下應用程序來測試這個和你所有的檢索方法。這也是一個SQLite數據庫也沒有錯誤。

t = Task.create 
=> #<Task id: 1, date: nil, created_at: "2011-08-23 14:32:27", updated_at: "2011-08-23 14:32:27"> 

t.date = "Tue, 16 Aug 2011" 
=> "Tue, 16 Aug 2011" 

t.save 

date = Task.last.date 
=> Tue, 16 Aug 2011 

Task.find(:all, :conditions => {:date => date}) 
=> [#<Task id: 1, date: "2011-08-16">] 

Task.find(:all, :conditions => ['date = ?', date]) 
=> [#<Task id: 1, date: "2011-08-16">] 

Task.find(:all, :conditions => ['date IS ?', date]) 
=> [#<Task id: 1, date: "2011-08-16">] 

我schema.rb:

create_table "tasks", :force => true do |t| 
    t.date "date" 
end 
+0

我正在使用Faker和Populator Gems添加虛擬記錄。我假設在填充日期時這些寶石有可能使用不同的日期格式。 – primary0

+1

請發表您如何填寫數據的樣本,我會檢查一下。 – Gazler

+0

http://pastebin.com/08evHDtJ 然後運行rake db:populate – primary0

2

即使我想在我的本地數據庫,一切似乎很好地工作。

to_sql方法將返回由rails生成的查詢。 這可能會幫助您調試問題:

Task.where(:date => date).to_sql