繁体   English   中英

如何从最近x个月获取数据Postgres Sql Query哪里的日期字段是时间戳?

[英]How to get data from last x months Postgres Sql Query where date field is a timestamp?

我正在尝试编写一个sql查询,在那里我可以获取过去3个月的数据。 具体来说,我想看看每个客户在过去3个月中花了多少钱。 我的日期字段是带有时区的时间戳(例如,2017-07-14 00:56:43.833191 + 00“)。

我不打算获得最近90天的数据,但实际上是过去3个月,所以如果它现在是2017年7月14日,我想在2017年4月1日到2017年6月30日之间获取数据。

这是我目前所拥有的,如果3个月是在同一年,它的效果很好,但它不会多年有效,这意味着如果当前日期是2017年2月15日,我希望它能从11月返回数据2016年1月1日至2017年1月31日。但是,这不起作用。

这是我当前的查询。 我很感激任何帮助。 谢谢!

select sum(amount), customer_id
from payments
where (date_part('month',payment_date) < (date_part('month',current_timestamp)-1) and
       date_part('month',payment_date) >=  (date_part('month',current_timestamp)-3) ) and 
       (date_part('year',date_created) = date_part('year',current_timestamp))
group by customer_id

嗯。 我认为date_trunc()更简单:

select sum(amount), customer_id
from payments
where payment_date >= date_trunc('month', now()) - interval '3 month' and
      payment_date < date_trunc('month', now())
group by customer_id;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM