Debería usar un marcador de posición para obtener el formato correcto y asegurarse de que esté correctamente citado:
t = Time.new
events = Event.where("datetime < :t", :t => t)
No puedes comparar una timestamp
columna con un número entero en PostgreSQL pero puede hacerlo en SQLite. Tienes que comparar tu timestamp
con otra timestamp
(o date
) o una cadena que se puede analizar como una timestamp
. Este SQL no funcionará:
SELECT "events".* FROM "events" WHERE (datetime < 132462148)
pero estos:
SELECT "events".* FROM "events" WHERE (datetime < '2011-12-23 06:52:25.096869')
SELECT "events".* FROM "events" WHERE (datetime < '2011-12-23')
Hay varias lecciones aquí:
- También debe comenzar a desarrollar sobre PostgreSQL si va a implementar en Heroku, ActiveRecord no lo aislará de todas las diferencias entre varias bases de datos.
- Debe dejar que ActiveRecord se preocupe por los problemas de conversión de tipo tanto como sea posible, si está comparando con una fecha o una hora, use un marcador de posición y entregue a AR un objeto de tiempo de algún tipo y deje que AR se preocupe por eso.
- Use marcadores de posición en lugar de interpolación de cadenas siempre que sea posible.