[英]Ruby on Rails - Select records within date range (slow performance)
I know how to find records within a date range, and have seen answers to similar questions.我知道如何在日期范围内查找记录,并且已经看到了类似问题的答案。 My question is how to reformat my date value from "mm/dd/yy" to a format which can be compared to a date range, all within one query.
我的问题是如何将我的日期值从“mm/dd/yy”重新格式化为一种可以与日期范围进行比较的格式,所有这些都在一个查询中。
I have a column in my database that contains a date in "mm/dd/yy" format.我的数据库中有一个列,其中包含“mm/dd/yy”格式的日期。 I am trying to write a query that will select all records within a date range defined by
start_date
and end_date
variables, which are Ruby Date
objects.我正在尝试编写一个查询,该查询将选择由
start_date
和end_date
变量定义的日期范围内的所有记录,这些变量是 Ruby Date
对象。
This is the best I have so far, but it's very slow:这是我迄今为止最好的,但速度很慢:
date_records = Record.select { |r| ( (r.division == division) && (Date.strptime(r.date, "%m/%d/%y") >= start_date) && (Date.strptime(r.date, "%m/%d/%y") <= end_date) ) }
我发现在执行解析和比较日期的.select
之前将我的记录转换为 JSON 极大地提高了性能(~35s 到~4s):
division_records = Record.where(division: division).as_json date_range_records = division_records.select { |r| ((start_date..end_date).include? Date.strptime(r["date"], "%m/%d/%y")) }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.