如何找出一个 INTERVAL 包含另一个 INTERVAL 的次数?

How to find out how many times a INTERVAL includes another one?

我有两个 TIMESTAMP 和一个 INTERVAL。我想知道时间戳之间的间隔有多少次间隔。

减去两个 TIMESTAMP 得到 INTERVAL

SELECT TIMESTAMP '2019-01-30' -  TIMESTAMP '2019-01-29';

->
0 years 0 mons 1 days 0 hours 0 mins 0.00 secs

但是我不会INTERVAL / INTERVAL除法。这在异常中运行:

SELECT (TIMESTAMP '2019-01-30' -  TIMESTAMP '2019-01-29') / INTERVAL '1 hour';

我想在末尾有一个整数。 24 对于前面的例子。有没有办法在 PostgreSQL 中处理它?

您需要对两个间隔进行标准化,例如通过提取秒数然后除以它们:

SELECT extract(epoch from (TIMESTAMP '2019-01-30' -  TIMESTAMP '2019-01-29')) / extract(epoch from INTERVAL '1 hour');