假设我有一个数据库表employee_worksheet,数据如下:
| ID|员工ID|时间开始|时间结束|
| --|--|--|--|
| 第一名| 1 |2024-01-02 7:00| 2024-01-02 8:00|
| 第二名| 1 |2024-01-02 9:00| 2024-01-02 10:00|
| #3| 1 |“2024-01-02 10:05”|“2024-01-02 11:00”|
| 第四名| 1 |“2024-01-02 11:05”|时间:2024-01-02 12:00|
| 第五名| 1 |2024-01-02 1:00|“2024-01-02 2:00”|
给定一个特定的记录,例如employee_worksheet #3,我如何查询以获得包括工作表#3的连续工作表?如果轮班的开始时间不超过上一个轮班结束时间的5分钟,则应考虑连续工作表。输出如下所示:
| ID|员工ID|时间开始|时间结束|
| --|--|--|--|
| 第二名| 1 |2024-01-02 9:00| 2024-01-02 10:00|
| #3| 1 |“2024-01-02 10:05”|“2024-01-02 11:00”|
| 第四名| 1 |“2024-01-02 11:05”|时间:2024-01-02 12:00|
先谢了。
我尝试了缺口和岛屿问题,但找不到我们在结果中间给出记录的情况。
1条答案
按热度按时间e5nqia271#
有时候,考虑消极条件并排除它们更容易。
对于移位a和B,它们不重叠是a.time_end < b.time_start or a.time_start >B.time_start
字符串
为了科普允许的5分钟间隔,您可以使用ADDDATE函数
型