2013-04-13 33 views
1

我試圖篩選使用此查詢被分配在特定的一天(今天)的記錄:導軌上日期篩選返回任何結果

assignments = p.assignments.where("assigned_date = ?", Date.today) 

儘管我知道這些記錄存在,我總是得到一個空白結果回來。 我也試過了...在哪裏(:assigned_date => Date.today)沒有運氣。

數據庫模式是:

# == Schema Information 
# 
# Table name: assignments 
# 
# id     :integer   not null, primary key 
# name     :string(255) 
# rep     :integer 
# set     :integer 
# instructions   :text 
# created_at   :datetime  not null 
# updated_at   :datetime  not null 
# player_id   :integer 
# actual_percentage :float 
# predicted_percentage :float 
# assigned_date  :date 
# 

並在控制檯中,當我輸入

p.assignments.first.assigned_date == Date.today 

返回true。 任何想法我做錯了什麼?

回答

1

DateTime包含一個日期和一個時間,因此您正在尋找具有精確值的記錄,而不僅僅是同一天。

assignments = p.assignments.where('assigned_date BETWEEN ? AND ?', DateTime.now.beginning_of_day, DateTime.now.end_of_day).all 

應該返回什麼預計

附:
all credit to Tadman

+0

@ user1742188,它是否適合您? – ted

+1

那麼,這裏的解決方案本身不起作用。但是我使用''assigned_date BETWEEN? AND?',@date,@date + 1.day''並且工作。我想這是因爲它是一個Date對象而不是日期時間。 – user1742188