1

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

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

即使我知道这些记录存在,我总是得到一个空白的结果。我也试过 ...where(: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

它返回真。知道我做错了什么吗?

4

1 回答 1

1

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

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

应该返回预期的结果

PS
所有学分给Tadman

于 2013-04-13T21:14:42.990 回答