如何在 postgreSQL 中获取上个月的记录?请帮忙。
很可能我该如何为此编写 psql 查询?
注意:我的created_at
表中有一个字段。
如何在 postgreSQL 中获取上个月的记录?请帮忙。
很可能我该如何为此编写 psql 查询?
注意:我的created_at
表中有一个字段。
您可以将模型中的范围定义为:
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
同样,您可能有当月、上个月之前的范围等。
假设你有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"))
您应该能够传递一个范围:
User.where(created_at: Time.now..1.month.ago)
您可以将其添加到类方法中:
def self.created_in_last_month
where(created_at: Time.now..1.month.ago)
end
这也可以帮助..
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'