gpt4 book ai didi

mysql - sql查询来检查2个事件是否重叠

转载 作者:行者123 更新时间:2023-11-29 01:38:58 25 4
gpt4 key购买 nike

我的表有 3 列名称、开始日期和结束日期仅当新事件的日期不与现有事件重叠时,我才需要在表中插入一条记录。所以,假设我有一个开始日期为 1/1/2015 和结束日期为 31/12/2015 的事件如果有这样的日期,我无法插入事件:

  • 2014 年 12 月 31 日 - 2016 年 1 月 1 日
  • 2/1/2015 - 30/12/2015
  • 2014 年 12 月 31 日 - 2015 年 1 月 6 日
  • 2015 年 2 月 1 日 - 2016 年 1 月 1 日

或者,谈论积分器:

  • 范围为 2...6 的现有记录

可能的无效记录:

  • 1..3
  • 3..5
  • 5..7
  • 1..7

匹配此条件的较短表达式是什么?

最佳答案

当(且仅当)第一个起点小于第二个终点,而第二个起点小于第一个终点时,任何 2 个范围重叠。

因此,您要测试传入记录的开始日期和结束日期与表中任何记录的此条件都不匹配。

这是一个视觉证明 - 两条线可以重叠的所有方式:

1.
s1|--------|e1
s2|--------|e2


2.
s1|-------|e1
s2|--------|e2


3.
s1|--------|e1
s2|--------|e2


4.
s1|-------------------|e1
s2|--------|e2


5.
s1|--------|e1
s2|-------------------|e2

如你所见,s1总是小于e2,而s2总是小于e1 .

当两条线不重叠时就不是这样了:

1.
s1|--------|e1
s2|--------|e2


2.
s1|--------|e1
s2|--------|e2

正如您在此处看到的,s1 大于 e2s2 大于 e1

实际的数据类型是完全不相关的,只要它是可比较的。

关于mysql - sql查询来检查2个事件是否重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31328205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com