我有一个如下形式的postgres表
from_secs, to_secs, value
10 20 1
12 50 2
....
现在,在查询时,我得到一个时间间隔[(from_secs1, to_secs1), (from_secs2, to_secs2), ...]
的列表,并且我需要得到(from_secs, to_secs)
与列表中至少一个间隔重叠的所有值。
我该怎么做呢?
- 示例:**
以上表为例,输入列表为[(1, 11), (55, 100)]
然后,查询应返回表的第一行,因为它是唯一与列表中至少一个间隔重叠的行
1条答案
按热度按时间wlzqhblo1#
您可以使用从
from_secs, to_secs
组合构建的integer range,并将其与多范围进行比较。然后使用overlaps operator
范围在两边都创建为“包含”。