SQL 发现时间重叠经过午夜(跨越 2 天)

标签 sql logic

我知道有很多这类问题,但我没有看到一个与我的标准足够相似的问题。所以我想请你帮忙。我拥有的字段只是时间类型的开始和结束。我不能在其中涉及任何具体日期。如果时间范围不超过一天的午夜,我将直接比较两个元组:

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/

相关文章:

sql - 当前时间戳 Redshift

sql - Rmarkdown - 使用表名作为动态 sql block 中的变量?

php - 如何获取查询次数最少的帖子列表和关联的标签

mysql - 在没有内部选择的情况下获取最低价格 ID

Javascript算法错误3

prolog - 如何阅读prolog中的谓词

sql - 个人和团体注册的数据库设计

java - 所有数字的总和,直到它在具有 o(1) 复杂度的 Java 中变成单个数字?

java - "equivalent"与 "equal"(或 "absolute equal")相同吗?

java - 如何在java中等待而不停止整个程序