2

過去の固定日から現在の日付までの一連の日付を月単位で作成しようとしています。8.4 の新しい機能でこれが可能であることはわかっていますが、今のところ 8.3 にこだわっています。

毎月の増分を得るためにこのSQLを持っているので、ここでうさぎの穴を下っているように感じます

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

次に、現在の日付 - 固定日付の間隔から月と年を抽出しようとしています

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

しかし、これは目的の日付シリーズを取得するためのばかげた方法だと思い始めています。

4

2 に答える 2

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
于 2011-10-27T11:11:18.967 に答える
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;
于 2013-07-22T14:05:41.233 に答える