【发布时间】:2017-12-12 22:09:07
【问题描述】:
如何获取此列表的开始和结束时间?我可以将日期添加到这个时间,并且可以得到最小值和最大值,但你可以看到 row 3 有下一天班,但它会在同一日期下,因为它是夜班
我已经添加了正常的白班员工也得到了正确的逻辑
EmployeeId ShiftDate ShiftStartTime ShiftEndTime
-----------------------------------------------------
20040 2017-11-01 21:00:00 23:00:00
20040 2017-11-01 23:00:00 00:30:00
20040 2017-11-01 00:30:00 06:00:00
20124 2017-11-01 09:00:00 16:30:00
20124 2017-11-01 16:30:00 22:00:00
20124 2017-11-01 22:00:00 22:30:00
我需要它,如下所示:
EmployeeId ShiftDate ShiftStartTime ShiftEndTime
----------------------------------------------------
20040 2017-11-01 21:00:00 06:00:00
20124 2017-11-01 09:00:00 22:30:00
【问题讨论】:
-
那里有一些令人抓狂的数据。如果他们分班工作会发生什么。就像他们早上进来工作几个小时,离开然后晚上回来工作几个小时,一直持续到第二天?时间是否总是像这样与同一
shiftdate上的其他记录相关联? -
请注明轮班开始的“实际日期”...不要添加员工来过滤列表 - 请将完整列表添加到您的问题中
-
@Grantly 我没有关注(我也不是 OP,所以也许这是有道理的,我只是不明白)。您认为这里的
Actual date是什么。如果这些数据不可用怎么办? “不要添加员工来过滤列表”是什么意思。 “您的问题的完整列表”是什么意思? -
@JNevill Actaul 的日期是早班,从晚上 11:30 开始,直到第二天早上 8:30……早班很容易被认为是“运行”第二天(当班次结束时)。因此,所有行政报告/薪水等都将基于实际日期。一个班次只能有一个日期,因此总是有业务规则(好的或坏的)来规定这一点。将员工链接到列表并不一定会使列表更相关、更完整或更有帮助......它只会增加另一个潜在的错误......完整的数据列表(如果不是太大的话)要好得多
-
@JNevill 如果您以我上面的早班示例为例,那么当您告诉您的员工在 2000 年 1 月 1 日晚上 11:30 来上班时,请注意复杂性......但是他的 SHIFT工作(写在他的工资支票上)是 2000 年 2 月 1 日(英国日期)的早班。因此,企业必须非常清楚实际和“报告”轮班日期 - 否则员工可能会迟到一天
标签: sql sql-server