我想在2个日期之间进行搜索。我创建了一个包含2个字段date_from
和date_to
的高级搜索表单。我想使用这些字段在created_at和completed_at的日期范围之间进行搜索。
我写了一个查询,但我得到了空白结果(没有条目):
def search_requests
requests = Request.all
requests = requests.where("created_at > ? AND completed_at < ?", date_from, date_to)
requests = requests.where(["title LIKE ? OR description LIKE ?", "%#{keywords}%", "%#{keywords}%"]) if keywords.present?
requests = requests.where(["incomplete LIKE ?", incomplete]) if incomplete.present?
return requests
end
确保date_from
和date_to
是date
类型,否则转换它的初始日期
#date_to = date_to.to_date
#date_from = date_from.to_date
查询 -
requests = requests.where("created_at::date >= ? AND completed_at::date < ?", date_from, date_to)
要么
requests = requests.where("created_at >= ? AND completed_at < ?", date_from.beginning_of_day, date_to.end_of_day)
您可以将日期类型转换为date
格式并使用如下:
requests = requests.where("DATE(created_at) > ? AND DATE(completed_at) < ?", date_from, date_to)
它就像这个on-rails控制台一样触发,
Request Load (1.9ms) SELECT "requests".* FROM "requests" WHERE (DATE(created_at) > '2019-03-03' AND DATE(completed_at) < '2019-03-09')