ActiveRecord查询中的DateTime算法(PostgreSQL)

Lou*_*too 4 postgresql activerecord ruby-on-rails ruby-on-rails-3 rails-activerecord

datetimeUser/ userstable中有两列:created_atbirthdate.我想找到生日日期不到13年的用户.

等效的Rails if语句将是((created_at - birthdate) < 13.years)

如何将其转换为ActiveRecord查询(一个可以在PostgreSQL上运行的查询)?这甚至是可能的,还是我必须手动迭代所有记录?

mu *_*ort 12

最简单的方法是使用间隔,然后它几乎是Rails版本的直接音译:

User.where(%q{created_at - birthdate < interval '13 years'})
Run Code Online (Sandbox Code Playgroud)

两个时间戳(或时间戳和日期)之间的差异是一个间隔,因此您只需要在比较的右侧使用适当的值.

  • @LouieGeetoo:你真的不应该在不同的堆栈上开发和部署,与日期算法的一点语法差异将是你的问题中最少的. (5认同)