Итак, в моей консоли Rails у меня есть запрос активной записи, который генерирует SQL.Я смотрю в logs/development
и вижу генерируемый SQL.
По некоторым причинам я не получаю ожидаемых результатов при выполнении запроса активной записи.Я просмотрел свои журналы и скопировал / вставил sql в консоль, которая подключена к моей базе данных, а затем неожиданно возвращает правильные результаты.Есть идеи, почему это происходит?Я использую PostgreSQL.
Я пытаюсь найти магазины, которые были открыты за последние 5 часов.
ПРАВКА, вычитая 10 часов, заставляет этот запрос работать ....
Вызов ActiveRecord (в пределах от geokit gem):
Store.within(10, :origin =>[30.267153000000000, -97.743060799999970]).where("date > current_timestamp - interval '5 hours'")
Сгенерированный SQL:
SELECT "store".*,
(ACOS(least(1,COS(0.5282614750548792)*COS(-1.705938231937002)*COS(RADIANS(store.lat))*COS(RADIANS(store.lng))+
COS(0.5282614750548792)*SIN(-1.705938231937002)*COS(RADIANS(store.lat))*SIN(RADIANS(store.lng))+
SIN(0.5282614750548792)*SIN(RADIANS(store.lat))))*3963.19)
AS distance FROM "store" WHERE ((store.lat>30.122583147146404 AND store.lat<30.41172285285359 AND store.lng>-97.91044799232348 AND store.lng<-97.57567360767642)) AND ((
(ACOS(least(1,COS(0.5282614750548792)*COS(-1.705938231937002)*COS(RADIANS(store.lat))*COS(RADIANS(store.lng))+
COS(0.5282614750548792)*SIN(-1.705938231937002)*COS(RADIANS(store.lat))*SIN(RADIANS(store.lng))+
SIN(0.5282614750548792)*SIN(RADIANS(store.lat))))*3963.19)
<= 10)) AND (date > current_timestamp - interval '5 hours')