我正在尝试创建一系列日期,从过去的固定日期到当前日期,以月为增量。我知道这可以在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'))) );
但我开始认为这是获得所需日期系列的愚蠢方式。
答案 0 :(得分: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
答案 1 :(得分: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;