如何使用PostgreSQL检索过去n天的结果

时间:2019-06-24 00:44:01

标签: postgresql

我是Postgres的新手

我要做什么: 每次在给定的日期运行查询时,您都可以获取过去n天的结果,而无需手动更新开始和结束日期。

示例查询:
如果我今天(2019年6月23日)运行查询
我查询过去8天的结果的查询看起来像

select count(*),state,DATE(date)
from animal_shelter
where date=>'2019-06-15' and date <='2019-06-22'
group by state,DATE(date);

但是这需要人工干预,每次我都要更新两个日期。

我发现有

now()::date - interval '8 days'

可以使用,但是我不明白如何使用之间的条件来修改它。

可能的解决方案

select count(*),state,DATE(date)
from animal_shelter
where date=> ( now()::date - interval '8 days') 
group by state,DATE(date);

这是对的吗?我可以放心,它可以准确地选择过去8天的数据,而今天还不包括在内?

请帮助我实现目标。

2 个答案:

答案 0 :(得分:3)

我相信您正在寻找:

WHERE date between now()::date - interval '8 days' AND now()::date - interval '1 day';

答案 1 :(得分:0)

您还可以使用此处提到的current_date函数:https://www.postgresql.org/docs/current/functions-datetime.html

所以答案就像

where date = current_date - interval 'n day'