2011-08-23 97 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