Java 计算/确定mysql中夜班的小时数
以下是员工日志的表格: 我想要的是生成员工的入职时间和离职时间。像这样:Java 计算/确定mysql中夜班的小时数,java,mysql,logic,Java,Mysql,Logic,以下是员工日志的表格: 我想要的是生成员工的入职时间和离职时间。像这样: 有人能帮我吗?任何添加的逻辑或算法都将被接受。这是一种方法。它可以在白天/晚上的任何班次工作,只要第一个min(datetime)代表中的 输出 +------+---------------------+---------------------+-------------+ | enno | time_out | time_in | No_of_hours | +--
有人能帮我吗?任何添加的逻辑或算法都将被接受。这是一种方法。它可以在白天/晚上的任何班次工作,只要第一个
min(datetime)
代表中的
输出
+------+---------------------+---------------------+-------------+
| enno | time_out | time_in | No_of_hours |
+------+---------------------+---------------------+-------------+
| 6 | 16.05.2017 06:30:50 | 15.05.2017 18:30:50 | 12,0000 |
| 6 | 17.05.2017 05:30:50 | 16.05.2017 18:10:50 | 11,3333 |
+------+---------------------+---------------------+-------------+
说明:
SELECT
floor(@row1 := @row1 + 0.5) as day,
t.*
FROM Table4356 t,
(SELECT @row1 := 0.5) r1
order by t.datetime
此查询使用序列将@row1
增量为0.5
,因此您将得到1.5 2.5
。现在,如果您仅使用floor
获取的整数部分,您将生成类似12
的序列。因此,此查询将为您提供此输出
+-----+------+---------------------+
| day | enno | datetime |
+-----+------+---------------------+
| 1 | 6 | 15.05.2017 18:30:50 |
| 1 | 6 | 16.05.2017 06:30:50 |
| 2 | 6 | 16.05.2017 18:10:50 |
| 2 | 6 | 17.05.2017 05:30:50 |
+-----+------+---------------------+
现在,您可以按天
分组,并获得最大
和最小
时间。一名员工的记录总是偶数,最短时间将是输入
,随后将是输出
等等,对吗?另外,以表格格式而不是图像格式提供数据,以便有人可以根据需要复制数据。好吧……让我们看看您尝试了什么。如果我使用每个员工的最小TimeIn和最大Timeout,它将仅基于每个日期或按日期分组。我需要的是夜班时间,从这一天到另一天。我已经完成了计算白班时间的工作,问题是员工上夜班的条件。好的。我想试试这件。如果我有问题,我会告诉你最新情况。谢谢,伙计:)嗨,乌萨夫。问题是,如果员工获得多个ins,它将给出如下输出:1 | 6 | 15.05.2017 18:30:50 1 | 6 | 15.05.2017 19:30:50 2 | 6 | 16.05.2017 06:30:50它将其他输入计算为第二天:(你给出的屏幕截图中没有。我在评论中也问了同样的问题,但你没有回答。这个解决方案适用于你给出的示例。如果你有不同的场景,请提出不同的问题。接受答案对你给出的示例有效,这样这个问题就可以结束了。我自己的观点是,回答像这个问题这样糟糕的问题会让你感到失望。)这是你的观点。我在这里学习新事物,我喜欢解决这种情况。我会继续尽我所能回答它们。干杯!
+-----+------+---------------------+
| day | enno | datetime |
+-----+------+---------------------+
| 1 | 6 | 15.05.2017 18:30:50 |
| 1 | 6 | 16.05.2017 06:30:50 |
| 2 | 6 | 16.05.2017 18:10:50 |
| 2 | 6 | 17.05.2017 05:30:50 |
+-----+------+---------------------+