Postgres Generate_Series返回错误的结果数

时间:2018-10-21 19:23:39

标签: postgresql generate-series

我想使用Postgres的generate_series()生成一系列时间戳,但是它返回错误的结果数:

select generate_series(
                 now() - interval '1 year',
                 now(),
                 interval '1 year' / 365
                     );

我希望得到365个结果,但它会返回371个结果。

结果中的每个间隔都代表不到一天,但我不知道为什么。

2017-10-21 19:21:01.355108
2017-10-22 19:01:17.761508
2017-10-23 18:41:34.167908
2017-10-24 18:21:50.574308
2017-10-25 18:02:06.980708
2017-10-26 17:42:23.387108

1 个答案:

答案 0 :(得分:2)

间隔“ 1年”不等于365天,这就是为什么您收到超过365行的原因。 我假设您希望每天从1年到现在都有一系列的日期戳>

select generate_series(
             now() - interval '1 year' ,
             now(),
             interval '1 day'
                );

您将收到366行,而不是刚开始前一年的365行,因此它将是366个时间戳记(前一年是您的系列开始日期+365 [如果下一年是or年,则为366])

如果您希望在没有第一个时间戳的情况下使用它,请在第一个参数中添加“间隔'1天'”。