Таким образом у меня есть таблица phone_numbers
в Rails 3.2, и я хотел бы иметь возможность сделать запрос, такие как следующие:Math с DateTime в SQL запроса в рельсах
PhoneNumber.where("last_called_at - #{Time.now} > call_spacing * 60")
где last_called_at является datetime
и call_spacing
- целое число, представляющее количество минут между вызовами.
Я попытался выше, я также попытался использовать
PhoneNumber.where("datediff(mi, last_called_at, #{Time.now}) > call_spacing")
Если кто-нибудь может помочь мне сделать эту работу, или даже рекомендуют ток, уточненный рельсы SQL камень, я был бы очень признательна.
Edit: Так что лучший способ сделать эту работу для меня было вместо добавления ready_at
столбец в моей базе данных, и обновление, когда либо call_spacing
или last_called_at
был обновлен, используя метод before_save
. Это, вероятно, самый семантический способ подхода к этой проблеме в рельсах.
Ok, я думаю, что это находится на правильном пути, но часть проблемы с этим запросом, что 'call_spacing' не является локальным переменным, его столбец базы данных. – OneChillDude
Ждать, к сожалению, я не могу вычитать что-либо из даты в SQL ??? – OneChillDude
Пока вы хотите сравнить его с call_spacing, который является целым значением, вы можете использовать TIME_TO_SEC для этих дат, а затем выполнять вычисления с использованием секунд. Повторите сначала запрос в моем ответе. Это должен быть хороший путь. Есть ли еще что-то сделать, чем заданная проблема? – pkubicki