如何基于模数日期进行查询

时间:2016-10-14 20:01:02

标签: sql ruby-on-rails postgresql activerecord

编写一个每天运行的任务,但只查找created_at在一周之前增量的用户。我想按照

的方式做点什么
User.where("created_at.days_ago % 7 = 0")

我该怎么做?

修改

作为参考,该任务用于验证用户的电子邮件。他们可以继续使用该产品而无需验证一段时间,但我想定期(每周一次)通过电子邮件进行验证。我正在使用heroku调度程序执行此操作,并且它允许的运行之间的最长时间为1天,这就是为什么我只需要从创建时起1周增量的人员

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容来生成日期列表:

((User.minimum(:created_at).to_date)..(Date.today)).to_a.select{|d| (Date.today - d) % 7 == 0}

由于created_at是一个时间戳,您可能需要对其应用SQL函数,以将其截断为日期。

days = ((Date.today-1.years)..(Date.today)).to_a.select{|d| (Date.today - d) % 7 == 0}
User.where("created_at::date in (?)", days)