2017-09-05 86 views
0

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

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

换句话说,我得到:selected_date和:为PARAMS偏移,需要输出的范围内的所有日期。

+0

你想这样做只是在Postgresql或有一种编程语言,如PHP或类似的语言参与? – Peter

+0

问题是我需要在查询中使用结果集。所以我可以很容易地用Python生成这个,但从性能的角度来看它并不是很好的解决方案 –

回答

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

+0

谢谢,它适用于我! –

0

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

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