我的问题有点像在这里找到的问题:
How to compare sqlite TIMESTAMP values
除了答案对PostgreSQL不起作用。有没有办法比较Rails用PG函数创建的两个created_at值?
这就是我想要做的事情(我知道这不起作用,DATETIME对PG不起作用):
EventDish.find_by_sql(["select * from ............. and DATETIME(events.created_at) < ?", other_event.created_at])
添加省略号以突出显示重要部分。换句话说,我想比较两个Rails created_at字段(这些是使用默认值),但我想将它们与PG进行比较。有什么建议? (我对SQL一般不太熟悉,所以任何纯Rails解决方案也会受到赞赏)
提前致谢
答案 0 :(得分:1)
你应该能够做到:
EventDish.where('created_at < ?', other_event.created_at)
这转换为:
"SELECT \"event_dishes\".* FROM \"event_dishes\" WHERE (created_at < '2011-06-10 16:39:19.557436')"
除非你真的需要做一些复杂的查询,否则我会亲自使用find_by_sql
。如果可以,请保持简单,让ActiveRecord为您完成工作。
如果您无法避免使用find_by_sql
,那么只需将当前查询更新为:
EventDish.find_by_sql(["select * from ............. WHERE (created_at < '#{other_event.created_at}')")
答案 1 :(得分:0)
只需跳过DATETIME()函数:
EventDish.find_by_sql(['select * from event_dish where created_at > ?', other_event.created_at])