2017-09-05 9 views
0

「2017-07-05」などの日付が選択されているとします。 PostgreSQLを使用して、選択された間のすべての日付のリストを取得する方法20日前?だから、出力以下の期待:selected_dateをして::選択した日付とn日前の日付のリストを取得するにはどうすればよいですか?

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

言い換えれば、私が手の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; 

generate_series()リターンがtimestampないdate

+0

ありがとう、それは私のために働く! –

0

最後に、これは私のために動作するため、キャストdt::dateが必要です。 Iディ同時にそれが、少し違う方法なので、多分それは誰かがあまりにも役立ちます

select '2017-07-01'::date - d.date as selected_date 
    from generate_series(0, 20) as d(date) 
order by selected_date desc 
関連する問題