我想使用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
答案 0 :(得分:2)
间隔“ 1年”不等于365天,这就是为什么您收到超过365行的原因。 我假设您希望每天从1年到现在都有一系列的日期戳>
select generate_series(
now() - interval '1 year' ,
now(),
interval '1 day'
);
您将收到366行,而不是刚开始前一年的365行,因此它将是366个时间戳记(前一年是您的系列开始日期+365 [如果下一年是or年,则为366])
如果您希望在没有第一个时间戳的情况下使用它,请在第一个参数中添加“间隔'1天'”。