我的目标是使用PostgreSQL创建一个看起来像这样的表:
date date_start date_end
12/16/2015 11/17/2015 12/16/2015
12/17/2015 11/18/2015 12/17/2015
etc.
这样我就可以加入另一个表来获取滚动30天窗口中每个日期的聚合。我一直在做一些研究,我认为generate_series()
是我想要使用的,但我不确定。
答案 0 :(得分:1)
这样的事情:
SELECT '2015-12-16'::date + g - 30 AS date_start
, '2015-12-16'::date + g AS date_end
FROM generate_series (0, 25) g; -- number of rows
我跳过了多余的date
列。 (不管怎样,你不应该使用基本类型名称作为标识符。)
generate_series()
的变体适用于时间戳,但生成integer
数字的简单版本对日期同样有用。也许更好,因为你可以避免与时区混淆。
始终将ISO 8601格式用于日期文字,这与任何datestyle
或区域设置无关。
相关: