如何获取所选日期和前n天之间的所有日期列表?

时间:2017-09-05 12:00:10

标签: sql postgresql date

假设我们选择了日期,例如'2017-07-05'。使用PostgreSQL,如何获取所选日期之间的所有日期列表,例如20天前?所以预期输出后:

2017-07-05
2017-07-04
2017-07-03
...
2017-06-15

换句话说,我得到:selected_date和:offset as params,需要输出范围内的所有日期。

2 个答案:

答案 0 :(得分:3)

您可以使用generate_series()

select dt::date 
from generate_series(date '2017-07-05' - interval '20' day, date '2017-07-05', interval '1' day) as t(dt)
order by dt::date desc;

投标dt::date是必要的,因为generate_series()会返回timestamp而不是date

答案 1 :(得分:0)

最后这对我有用。我同时说它,但有点不同的方式,所以也许它可以帮助别人

select '2017-07-01'::date - d.date as selected_date
  from generate_series(0, 20) as d(date)
order by selected_date desc