Rails过滤日期返回没有结果

时间:2013-04-13 21:08:00

标签: ruby-on-rails datetime

我正在尝试使用此查询过滤在特定日期(今天)分配的记录:

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 个答案:

答案 0 :(得分:1)

DateTime包含日期和时间,因此您正在查找具有精确值的记录,而不仅仅是同一天。

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

应该返回预期的

P.S。
所有积分均为Tadman