我知道有很多这类问题,但我没有看到一个与我的标准足够相似的问题。所以我想请你帮忙。我拥有的字段只是时间类型的开始和结束。我不能在其中涉及任何具体日期。如果时间范围不超过一天的午夜,我将直接比较两个元组:
end1 > start2 AND start1 < end2
(接触的端点不被认为是重叠的。)
但是当我涉及经过(或在)午夜的时间范围时,这显然不起作用。例如,给定:
start | end
--------+--------
06:00PM | 01:00AM
03:00PM | 09:00PM
在不涉及日期的情况下,请问我该如何实现。我的假设是,如果结束时间少于开始时间,那么我们需要 2 天。
我试图在普通的标准 SQL 中执行此操作,因此只需在 WHERE 子句中使用简单明了的逻辑即可。
谢谢大家!
添加:
此外,我将如何测试一个时间范围是否完全包含另一个时间范围?再次感谢!
最佳答案
如果您的 SQL 支持时差:
(end1 - start1) > (start2 - start1) AND (end2 - start2) > (start1 - start2)
关于SQL 发现时间重叠经过午夜(跨越 2 天),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2760244/