我有两个 datetime
User
中的列/users
表:created_at
和 birthdate
.我想查找出生日期在其创建日期之前不到 13 年的用户。
相当于 Rails if
声明将是 ((created_at - birthdate) < 13.years)
如何将其转换为 ActiveRecord 查询(可在 PostgreSQL 上运行的查询)?这甚至可能吗,还是我必须手动遍历所有记录?
最佳答案
最简单的方法是使用 interval ,那么它几乎就是 Rails 版本的直接音译:
User.where(%q{created_at - birthdate < interval '13 years'})
两个时间戳(或时间戳和日期)之间的差异是一个间隔,因此您只需要比较右侧的适当值即可。
关于ruby-on-rails - ActiveRecord 查询中的日期时间算法 (PostgreSQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10301400/