2013-07-18 3 views
0

У меня есть модель A, которая использует временные метки Rails и атрибут ttl, который представляет время в минутах между каждым обновлением записи.Выбор записи по времени

Я хочу, чтобы выбрать все записи, которые должны быть обновлены Ergo:

WHERE (Time.now - updated_at).to_minutes > ttl) 

Я пытался использовать вариации Feed.where("(?-updated_at) > ttl", Time.now).to_a, но я пока не удалось. Может кто-нибудь помочь мне с запросом?

ответ

2

Причина в том, что базы данных не могут делать расчеты времени точно так же, как арифметические вычисления.
Вы должны использовать функцию времени БД, к сожалению, нет стандарта.

В MySQL можно использовать

Feed.where("TIMESTAMPADD(MINUTE,ttl,updated_at)<?",Time.now) 
+0

Abit раздражает придется использовать MySQL в разработчика, но он работает как шарм – Artmann

+0

также с помощью 'SQLite' вы можете использовать' где ("STRFTIME ("% Y-% m-% d% H:% i:% s ', updated_at,' + '|| ttl ||' minutes ')

Смежные вопросы