Я знаю, как найти записи в диапазоне дат, и видел ответы на подобные вопросы. Мой вопрос заключается в том, как переформатировать значение даты с «мм/дд/гг» до формата, который можно сравнить с диапазоном дат, все в одном запросе.Ruby on Rails - выбор записей в диапазоне дат (низкая производительность)
У меня есть столбец в моей базе данных, который содержит дату в формате «мм/дд/гг». Я пытаюсь написать запрос, который будет выбирать все записи в диапазоне дат, определяемом start_date
и end_date
переменными, которые являются объектами Ruby Date
.
Это лучшее, что я до сих пор, но это очень медленно:
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)) }
возможно дубликат http://stackoverflow.com/questions/2381718/rails-activerecord-date-between есть ли конкретная причина, почему вы с помощью оператора SQL непосредственно, вместо запроса ActiveRecord он lpers? –
Нет причин ... Я отлично использую '.where'. Моя основная борьба - это получение даты из формата «мм/дд/гг» для сравнения в запросе. Это лучшее, что я мог сделать, и это очень медленно: 'date_records = Record.select {| r | ((Date.strptime (r.date, "% m /% d /% y")> = start_date) && (Date.strptime (r.date, "% m /% d /% y") <= end_date))} ' – PyroLemur
Кажется, что первое задание должно состоять в том, чтобы хранить эти даты как даты, а не как строки. –