首页 > 解决方案 > 给定特定的日期时间和分钟数,我如何仅在工作时间计算结束日期时间,不包括多个休息时间和天数翻转?

问题描述

我有一个特殊的问题,其中我有开始日期时间,我需要根据变量 X 计算“最终”日期时间。

基本上,我有第一个表,有几列,其中一个是日期时间。

在另一个表中,我有一些“时间”列,其中包含:

start_of_day, end_of_day, break1_start, break1_end, break2_start, break2_end (4 breaks in total), minutes_per_call

我需要在第一个表中获取日期时间,并且只在一天的工作时间内添加实际分钟数。

为了增加另一层复杂性,我需要避免坐姿和太阳。

我试过了,我所达到的最多的是计算天翻转,但我不知道如何完成它

有什么提示吗?

在这里,我看到多次引用其他表格来计算日期和时间,但我找不到与我的情况相匹配的示例 - 我现在很难过

CREATE TABLE `turns` (
  `LINE_TYPE` varchar(10) NOT NULL,
  `DAY_BEGIN` time DEFAULT NULL,
  `DAY_END` time DEFAULT NULL,
  `BREAKTIME1_BEGIN` time DEFAULT NULL,
  `BREAKTIME1_END` time DEFAULT NULL,
  `BREAKTIME2_BEGIN` time DEFAULT NULL,
  `BREAKTIME2_END` time DEFAULT NULL,
  `BREAKTIME3_BEGIN` time DEFAULT NULL,
  `BREAKTIME3_END` time DEFAULT NULL,
  `MINUTES_TO_COMPLETION` int DEFAULT NULL,
  PRIMARY KEY (`LINE_TYPE`)
);


INSERT INTO `WORKDB`.`TURNS`
(`LINE_TYPE`,
`DAY_BEGIN`,
`DAY_END`,
`BREAKTIME1_BEGIN`,
`BREAKTIME1_END`,
`BREAKTIME2_BEGIN`,
`BREAKTIME2_END`,
`BREAKTIME3_BEGIN`,
`BREAKTIME3_END`,
`MINUTES_TO_COMPLETION`)
VALUES
('TLD','08:00:00', '17:00:00', '10:00:00', '10:15:00', '12:30:00', '13:30:00', '15:00:00', '15:30:00', '300');


CREATE TABLE `calculation` (
  `LINE_TYPE` varchar(10) NOT NULL,
  `CALLTIME` datetime NOT NULL,
  PRIMARY KEY (`LINE_TYPE`)
);

INSERT INTO `WORKDB`.`calculation`
(`LINE_TYPE`,`CALLTIME`)
VALUES
('TLD','25/09/2020 14:58:00')

从这些,我需要有一个选择,让我计算出“预期结束时间”,不包括休息时间。在示例中,我们有一个从 14:58:00 开始的对标识符 TLD 的调用 - 完成时间是通过添加完成时间来计算的,在本例中为 300 分钟。

计时器只需要在工作时间内(这意味着在一天之内(DAY_BEGIN 和 DAY_END)和休息时间之外)运行。

这种特殊情况将是:

14:58:00 是 2h2m 到 5,负 30m 休息时间(15:00 到 15:30)是 1h32m 到关闭时间。定时器在第二天早上 8 点再次开始,直到 10 点(第一次休息时间),我们已经达到 2 小时 32 分。10:15 我们重新开始,直到第二个午餐时间,4 小时 47 分。13:30我们再次出发,又过了13分钟达到了300分钟的目标。

所以,这个计时器(除非我搞砸了我的计算)会在第二天 26/09/2020 13:43 用完。

这是我需要的数据,我不知道如何在 mysql 中进行这些计算。

标签: mysql

解决方案


推荐阅读