2011-10-27 15 views
2

過去の日付から現在の日付までの一連の日付を月単位で作成しようとしています。私はこれが新しい機能で8.4で可能であることを知っているが、私は今のところ8.3で立ち往生している。postgresqlで日付シリーズを作成する833

私は私の毎月の増加

SELECT date('2008-01-01') + (to_char(a,'99')||' month')::interval as date FROM generate_series(0,20) as a; 

を取得するには、このSQLを持っているように私は、現在の日付の間から月と年を抽出しようとしています、私はここにウサギの穴を下つもり感じる - 確定日付の

SELECT extract( month from interval (age(current_date, date('2008-01-01'))) ); 

しかし、これは希望の日付シリーズを取得するばかげた方法だと思うようになり始めました。

答えて

4

は次のように仕事ができる:

SELECT ('2008-01-01 0:0'::timestamp 
     + interval '1 month' * generate_series(0, months))::date 
FROM (
    SELECT (extract(year from intv) * 12 
      + extract(month from intv))::int4 AS months 
    FROM (SELECT age(now(), '2008-01-01 0:0'::timestamp) as intv) x 
    ) y 
0

場合、誰かが、例えば必要があるだろう指定された期間内の3時間間隔:

SELECT ('2013-01-01 0:0'::timestamp 
     + interval '1 hour' * generate_series(0, ('2013-02-01'::date - '2013-01-01'::date)*24, 3))::timestamp; 
関連する問題