假设我们选择了日期,例如'2017-07-05'。使用PostgreSQL,如何获取所选日期和所选日期之间的列表20天前?所以预计以下的输出:如何获得之前所选日期和n日之间的所有日期列表?
2017-07-05
2017-07-04
2017-07-03
...
2017-06-15
换句话说,我得到:selected_date和:为PARAMS偏移,需要输出的范围内的所有日期。
假设我们选择了日期,例如'2017-07-05'。使用PostgreSQL,如何获取所选日期和所选日期之间的列表20天前?所以预计以下的输出:如何获得之前所选日期和n日之间的所有日期列表?
2017-07-05
2017-07-04
2017-07-03
...
2017-06-15
换句话说,我得到:selected_date和:为PARAMS偏移,需要输出的范围内的所有日期。
您可以使用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
谢谢,它适用于我! –
最后,这对我的作品。我同时它,但有点不同,所以也许它可以帮助别人
select '2017-07-01'::date - d.date as selected_date
from generate_series(0, 20) as d(date)
order by selected_date desc
你想这样做只是在Postgresql或有一种编程语言,如PHP或类似的语言参与? – Peter
问题是我需要在查询中使用结果集。所以我可以很容易地用Python生成这个,但从性能的角度来看它并不是很好的解决方案 –