Вы должны использовать заполнитель , чтобы получить правильный формат и убедиться, что он правильно указан в кавычках:
t = Time.new
events = Event.where("datetime < :t", :t => t)
Невозможно сравнить столбец timestamp
с целым числомв PostgreSQL, но вы можете в SQLite.Вы должны сравнить ваш timestamp
с другим timestamp
(или date
) или строкой, которую можно проанализировать как timestamp
.Этот SQL не будет работать:
SELECT "events".* FROM "events" WHERE (datetime < 132462148)
, но он будет:
SELECT "events".* FROM "events" WHERE (datetime < '2011-12-23 06:52:25.096869')
SELECT "events".* FROM "events" WHERE (datetime < '2011-12-23')
Здесь есть несколько уроков:
- Вы также должны начать разработкуНа вершине PostgreSQL, если вы собираетесь развертывать на Heroku, ActiveRecord не изолирует вас от всех различий между различными базами данных.
- Вы должны позволить ActiveRecord как можно больше беспокоиться о проблемах преобразования типов, еслиВы сравниваете данные с датой или временем, используйте заполнитель и передаете AR какой-либо объект времени, и пусть AR беспокоится об этом.
- По возможности используйте заполнители вместо интерполяции строк.