简体   繁体   English

Ruby on Rails - 选择日期范围内的记录(性能缓慢)

[英]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_dateend_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM