如何在postgreSQL中获取上个月的记录?请帮忙。
我最有可能为此编写psql查询?
注意:我的表格中有created_at
字段。
答案 0 :(得分:7)
您可以在模型中定义范围:
scope :in_last_month, where('created_at BETWEEN ? AND ? ', 1.month.ago.beginning_of_month , 1.month.ago.end_of_month)
或者
scope :in_last_month, where(:created_at => 1.month.ago.beginning_of_month..1.month.ago.end_of_month)
然后致电:
Model.in_last_month
类似地,您可能拥有当月,上个月之前的范围等。
答案 1 :(得分:3)
假设你有User
模型
date = Date.today >> -1
User.where("DATE_FORMAT('created_at', '%Y-%m') = ?" date.strftime("%Y-%m"))
对于postgres
User.where("TO_CHAR('created_at', '%YYYY-%MM') = ?" date.strftime("%Y-%m"))
答案 2 :(得分:2)
你应该能够通过一个范围:
User.where(created_at: Time.now..1.month.ago)
您可以将其添加到类方法中:
def self.created_in_last_month
where(created_at: Time.now..1.month.ago)
end
答案 3 :(得分:2)
这也可以帮助..
scope :in_last_month, where('created_at BETWEEN ? AND ? ', 1.month.ago.beginning_of_month.strftime('%Y-%m-%d'), 1.month.ago.end_of_month.strftime('%Y-%m-%d'))
当我找到正确的查询时,它会生成created_at BETWEEN '2013-07-01' AND '2013-07-31'