gpt4 book ai didi

mysql - 比较 SQL 中特定条目的日期范围

转载 作者:行者123 更新时间:2023-11-29 12:50:31 24 4
gpt4 key购买 nike

我有一个数据库如下:

    ID    |    Term    | Start Date | End Date
12 6 Jul '12 Dec '12
12 6 Jan '13 Jun '13
13 2 Jul '12 Aug '12
13 12 Jul '12 Jul '13

因此,每个 ID 都是已达成的交易。这是我正在处理的数据库,看起来有些数据输入不正确。我正在尝试编写一个过滤器,其中显示同一交易 ID 的重叠术语。例如,对于 ID 12,契约(Contract)期限为 2012 年 7 月至 12 月 6 个月,然后又延长了 6 个月。对于ID 13,有人输入了错误的数据,契约(Contract)在同一期限内“签订了两次”,日期重叠。

所以我需要一个过滤器,对每个 ID 集合进行排序(不一定只有两个,契约(Contract)可以扩展任意次数)并检查该 ID 中所有日期的有效性,如下所示上面定义的。我不太熟悉 SQL,所以 while() 循环是我首先想到的,但我想知道是否有更简单的方法来应用这种过滤器?

最佳答案

您需要查找日期范围重叠的所有行吗?

此表是否有主键/任何唯一标识符以避免将行与其自身进行比较?

select * from vt as t1
where exists
( select * from vt as t2
where t1.id = t2.id -- same ID
and t1.PK <> t2.PK -- but not the same row
and t1.end_date >= t2.start_date -- date ranges
and t1.start_date <= t2.end_date -- overlap
)

根据您的数据,您可能需要将比较更改为 </> 而不是 <=/>=

关于mysql - 比较 SQL 中特定条目的日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24811624/

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