ruby-on-rails - ActiveRecord 查询中的日期时间算法 (PostgreSQL)

标签 ruby-on-rails postgresql ruby-on-rails-3 activerecord rails-activerecord

我有两个 datetime User 中的列/users表:created_atbirthdate .我想查找出生日期在其创建日期之前不到 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/

相关文章:

ruby-on-rails - 如何将属于 "has many :through"一半的项目分配给关联的另一半?

ruby-on-rails - 载波,保存记录?

database - 从 PostgreSQL 函数生成 HTML

ruby - 工厂女工——理解协会

ruby-on-rails - 动态模型验证

facebook - Rails Devise+Omniauth Facebook 重定向到用户/注册失败

ruby-on-rails - 如何在保存之前在 Rails 3 中手动设置嵌套模型值?

javascript - 从 Haml 在外部 javascript 中调用 ruby​​ 数组

sql - Postgresql UPDATE 基于先前 SELECT 的结果

ruby-on-rails - 简单的 Rails 应用程序 : Error Cannot visit Integer