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 回答