【问题标题】:Finding if a time period overlaps another time period查找一个时间段是否与另一个时间段重叠
【发布时间】:2015-11-15 21:41:41
【问题描述】:

在 MySQL 中,有没有一种方法可以让您找到两个时间段是否相互重叠?例如,我想看看2015-10-10 9:00:00 - 2015-10-10 15:00:00 是否与2015-10-15 12:00:00 - 2015-10-10 18:00:00 重叠。如您所见,它们确实重叠,我想知道是否有这种方法?

【问题讨论】:

  • 考虑两个时间长度,a 和 b。如果 a_start = b_start 则可以说这两个时期重叠

标签: mysql time sum overlap


【解决方案1】:

如果您只想知道它们是否重叠,您只需检查一个范围是否在另一个范围开始之前完全完成。如果这不是,则存在重叠。

因此,如果您将每个时间戳字段命名为 start_1 到 end_1 和 start_2 到 end_2,您可以使用它来选择所有重叠的记录。

SELECT * FROM xxx WHERE NOT(end_1 <= start_2 OR end_2 <= start_1)

您还应该能够使用相同的逻辑表达式来创建新的结果集字段。

SELECT NOT(end_1 <= start_2 OR end_2 <= start_1) as overlap, * FROM xxx

【讨论】:

    猜你喜欢
    • 2013-06-10
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    相关资源
    最近更新 更多