如何计算给定日期范围内的间隔时间?简单版本

时间:2019-06-26 18:19:43

标签: postgresql

我可以写:

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'

1 个答案:

答案 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');

请注意,这只会为以天或更短单位为单位的间隔给出正确答案;几个月或更长时间,您必须使用原始解决方案。