Postgresql 是否使用generate_series()为每天生成30天的日期范围?

Postgresql 是否使用generate_series()为每天生成30天的日期范围?,postgresql,set,date-arithmetic,generate-series,Postgresql,Set,Date Arithmetic,Generate Series,我的目标是使用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()是我想要使用的,但我不确定。类似这样的东

我的目标是使用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()
是我想要使用的,但我不确定。

类似这样的东西:

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
列。(无论如何,您不应该使用基本类型名称作为标识符。)

有一种变体可用于时间戳,但生成
整数
数字的简单版本同样适用于日期。也许更好,因为你避免了可能的时区混淆

日期文字始终使用ISO 8601格式,这与任何
日期样式或区域设置都是明确的

相关的:


我更喜欢另一种解决方案:一个带有列
add
和行值1..30的“helper”表。然后,您可以使用
DATEADD(day,base\u date)
获得某个基准日期周围30个日期的列表。为什么
date\u end
是常量?(12/16/2015),也应该为“滚动窗口”而移动。是的,这是一个打字错误。刚刚编辑。