Postgres Generate_Series return 错误的结果数
Postgres Generate_Series return wrong number of results
我想使用 Postgres 的 generate_series()
生成一系列时间戳,但是 return 结果数量错误:
select generate_series(
now() - interval '1 year',
now(),
interval '1 year' / 365
);
我希望有 365 个结果,但 return 有 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 年”不等于 365 天,这就是您收到超过 365 行的原因。
我假设你希望每天都有从一年前到现在的一系列日期戳>
select generate_series(
now() - interval '1 year' ,
now(),
interval '1 day'
);
您将收到 366 行,而不是 365,因为您正好在 1 年前开始,所以它将是 366 个时间戳(1 年前是您系列的开始日期 +365 [或 366,如果年份是闰年] 接下来天)
如果你想要它没有第一个时间戳,那么将 "interval '1 day'" 添加到第一个参数。
我想使用 Postgres 的 generate_series()
生成一系列时间戳,但是 return 结果数量错误:
select generate_series(
now() - interval '1 year',
now(),
interval '1 year' / 365
);
我希望有 365 个结果,但 return 有 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 年”不等于 365 天,这就是您收到超过 365 行的原因。 我假设你希望每天都有从一年前到现在的一系列日期戳>
select generate_series(
now() - interval '1 year' ,
now(),
interval '1 day'
);
您将收到 366 行,而不是 365,因为您正好在 1 年前开始,所以它将是 366 个时间戳(1 年前是您系列的开始日期 +365 [或 366,如果年份是闰年] 接下来天)
如果你想要它没有第一个时间戳,那么将 "interval '1 day'" 添加到第一个参数。