【Mysql】Mysql获取排班时间段中的休息时间段方法

news2025/1/20 18:24:35

在MySQL中,可以使用自连接(self-join)来获取上一条记录的结束时间和下一条记录的开始时间,并将它们组合成一条记录。首先,需要为表创建一个包含记录ID和时间信息的临时表,然后使用自连接获取相邻记录的时间信息。

数据准备:

-- demo.schedule definition

CREATE TABLE `schedule` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
  `start_time` datetime NOT NULL,
  `end_time` datetime NOT NULL,
  `employee_id` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
INSERT INTO demo.schedule
(start_time, end_time, employee_id)
VALUES('2023-09-08 07:50:00', '2023-09-08 12:00:00', 1);
INSERT INTO demo.schedule
(start_time, end_time, employee_id)
VALUES('2023-09-08 12:40:00', '2023-09-08 17:20:00', 1);
INSERT INTO demo.schedule
(start_time, end_time, employee_id)
VALUES('2023-09-08 18:10:00', '2023-09-08 20:30:00', 1);

以下是一个示例查询,假设你的表名为schedule,其中包含id和start_time、end_time字段:

select * from schedule; 

输出:
在这里插入图片描述

-- 创建临时表并插入数据
CREATE TEMPORARY TABLE temp_schedule (
  prev_id INT,
  curr_id INT,
  prev_end_time DATETIME,
  curr_start_time DATETIME
);

INSERT INTO temp_schedule (prev_id, curr_id, prev_end_time, curr_start_time)
SELECT
  t1.id AS prev_id,
  t2.id AS curr_id,
  t1.end_time  AS prev_end_time,
  t2.start_time  AS curr_start_time
FROM
  schedule t1
JOIN
  schedule t2 ON t1.id = t2.id - 1;

select * from temp_schedule

输出:
在这里插入图片描述

这个查询将创建一个名为temp_schedule的临时表,其中包含相邻记录的ID、上一条记录的结束时间和下一条记录的开始时间。最后,通过在临时表上执行查询,选择上一条记录的结束时间和下一条记录的开始时间的结果。

注意:这个查询假设记录按时间顺序排列,并且每个记录的ID是唯一的。如果你的表结构或数据不符合这些要求,你需要根据实际情况进行调整。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/991401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

seata升级1.1.0后遇到io.seata.common.exception.ShouldNeverHappenException

我们这一节主要讲的是seata升级后的主要修改,至于seata的基本部署可以参考我之前的随笔。 一开始我在升级SpringBoot版本之后,seata就突然启动不起来了,报了下面的错: Caused by: io.seata.common.exception.ShouldNeverHappenExc…

将AI融入到SEO中—基于Python的实现思路

在当今数字化时代,搜索引擎优化(SEO)对于网站和在线业务的成功至关重要。然而,随着人工智能(AI)技术的迅猛发展,我们可以利用它来提升SEO策略并取得更好的效果。本文将介绍如何通过使用Python编…

浅谈多回路电表在荷兰光伏系统配电项目中的应用

1.背景信息 Background: 随着全球化石能源(石油,煤炭)越来越接近枯竭,污染日趋严重,气候日益变暖等问题,全球多个国家和地区相继出台了法规政策,推动了光伏产业的发展。但是现有的光…

基于SSM的蜀都天香酒楼管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

DC电源模块的使用寿命问题

BOSHIDA DC电源模块的使用寿命问题 DC电源模块是一种电子元器件,它为电路提供稳定的直流电压和电流。在电子产品中,DC电源模块往往是核心部件之一,其使用寿命与产品的整体性能密切相关。 使用寿命是DC电源模块的重要参数之一。使用寿命是指…

软件测试/测试开发丨Python 深拷贝与浅拷贝

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27327 深拷贝与浅拷贝 浅拷贝:有4中实现方法:对象本身的copy方法,工厂方法,切片以及copy模块的copy方法。…

如何才能搭建高质量的在线产品手册呢?

随着科技的发展,越来越多的企业将目光投向互联网,并将自己的产品推向了线上。而对于这些线上产品,拥有一份完备的、易用、高质量的在线产品手册显得尤为重要。 如何才能搭建高质量的在线产品手册呢? 一、确定手册的内容和格式 …

数字高精度温度传感芯片的工作原理以及应用

数字温度传感芯片是一种测量温度的设备,其工作原理是通过感知周围环境的温度变化来产生电信号,并将其转换为数字信号输出。通常使用集成电路技术,利用材料的电阻、电容、热电效应等特性来实现温度的测量。能够提供准确和可重复性的温度测量结…

FPGA GTH aurora 8b/10b编解码 PCIE 板对板视频传输,提供2套工程源码加QT上位机源码和技术支持

目录 1、前言免责声明 2、我这里已有的 GT 高速接口解决方案3、GTH 全网最细解读GTH 基本结构GTH 发送和接收处理流程GTH 的参考时钟GTH 发送接口GTH 接收接口GTH IP核调用和使用 4、设计思路框架视频源选择silicon9011解码芯片配置及采集动态彩条视频数据组包GTH aurora 8b/10…

「黄钊的AI日报·第一季」正式发布!

1、每天5条AI内容点:不是常见的新闻汇总模式,而是站在AI产品经理的视角,提炼干货认知、展示“what I see”。 2、已在社群“AI产品经理大本营”里,已运营5个月之久,用户口碑非常好(可见《详细介绍「黄钊的A…

YOLOV7改进-轻量级上采样算子CARAFE

CARAFE 可以作为论文中的小创新点 上采用算子参数可以跑一跑,增加实验丰富度,工作量 1、复制代码,到common文件的最底下就可以了 2、yolo.py复制 3、yolov7里就俩上采样,替换名称,后面参数可以调 打印出来便于观看参数

Java——》线程间是如何通信的

推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

SpringBootVueEmementUI前后端分离整合、统一封装axios、跨域配置

🧑‍💻作者名称:DaenCode 🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…

人机融合的经验与人类的或机器的经验不同

一、人机融合的经验与人、机器的经验有所不同 人的经验是通过感知、学习思考等方式积累起来的,是基于我们的感官、情感和意识等特点所形成的。人在与世界交互的过程中,通过观察事物、从错误中学习、与他人交流等方式逐渐积累了大量的经验。人类的经验通常…

在 Arweave 中轻松管理文件:借助 4EVERLAND 完成 Web3 前端Path Manifests的终极指南

为什么使用Path Manifests? 当在 IPFS 上发布 NFT 时,图片和元数据会被上传到 IPFS 网络以获得一个根 CID,其形式如下: ipfs://bafybeic36ik6cngu37xbzmpytuvyo7z3lyeen44clkkxq5d263zj4nkzr4 通过使用这个根 CID,每…

ABB机器人10106故障报警(维修时间提醒)的处理方法

ABB机器人10106故障报警(维修时间提醒)的处理方法 故障原因: ABB机器人智能周期保养维护提醒,用于提示用户对机器人进行必要的保养和检修。 处理方法: 完成对应的保养和检修后,要进行一个操作&#xf…

安装 paddlepaddle paddleocr库,避坑指南

看到这个库我就头疼,因为换了电脑,不得不再来一遍,又是到处踩坑!拼了好几个小时,总结出来的最终解决方法!详细的傻瓜式解决! - import paddle 报错!illegal hardware instruction py…

党建专题汇报片是什么

党建专题汇报片是以党的建设和发展为主题的一种专题性影片。它通过影像、文字、音频等多种表现手段,全面展示和宣传党的建设和发展情况,突出党的主张、方针、政策等内容,旨在加强党员教育培训、宣传党建成果、凝聚党员思想力量、推动党的事业…

上手Spring

设置Maven镜像为阿里云 找到Maven的目录所在位置找到conf目录找到settings.xml文件 找到Maven的目录所在位置&#xff1a;去idea 的设置中 直接搜索Maven 找到conf目录 修改Maven本地仓库的地址 地址自定义 修改Maven的镜像为阿里云镜像 <mirror><id>nexus-aliy…

什么是Scrum?如何实施Scrum(敏捷开发)以及敏捷工具

什么是Scrum&#xff1f; Scrum是一个敏捷开发框架&#xff0c;它是一个增量的、迭代的开发过程。它被广泛应用于敏捷软件开发&#xff0c;在Scrum中&#xff0c;开发过程由若干个短的迭代周期组成&#xff0c;每个迭代周期称为一个Sprint。 那么Scrum如何实施呢&#xff1f;…