#ruby-on-rails
#ruby-on-rails
Вопрос:
При попытке обобщить базу данных трафика за определенный промежуток времени невозможно выполнить поиск, вызывая компонент объекта datetime как таковой:
txat0 = Transaction.where(['shop_id = ? AND created_at.hour = ?', shop, 0]).count
Можно было бы пройти через маршрут SQL (т.Е. postgresql)
select extract(shop_id, hour from created_at) from transactions
и фильтрует оттуда.
Но каков краткий способ достижения этого с помощью ruby или rails (производительность не является проблемой для этого запроса)?
Ответ №1:
Я полагаю, что вы могли бы сделать микс и запустить часть SQL внутри запроса ActiveRecord.
Как насчет:
Transaction.where("DATE_PART('hour', created_at) = ?", 0)
PS: я проигнорировал shop_id
предложение в приведенном выше примере, но вы можете просто добавить его позже.
Комментарии:
1. допустимый ответ. Единственным незначительным недостатком является зависимость от синтаксиса, специфичного для db. Для mysql это было бы
.where("HOUR(created_at) = ?", 0)