我可以写:
select count(*) from generate_series(
'2019-03-01'::date, '2019-05-01'::date,
interval '3 day 1 hour'
)
-- exclude upper boundary
where generate_series <> date '2019-05-01'::date;
有没有一种方法可以使它更简单?喜欢:
daterange( '2019-03-01', '2019-05-01' ) / interval '3 day 1 hour'
答案 0 :(得分:1)
您可以使用
EXTRACT(epoch FROM some_interval)
以秒为单位获取间隔的持续时间。
您可以按以下方式使用它:
SELECT EXTRACT(epoch FROM '2019-05-01'::timestamptz - '2019-03-01'::timestamptz)
/ EXTRACT(epoch FROM interval '3 day 1 hour');
请注意,这只会为以天或更短单位为单位的间隔给出正确答案;几个月或更长时间,您必须使用原始解决方案。