需要帮助在SQL中查找最近的移位时间

时间:2011-06-04 09:03:21

标签: sql sql-server-2008

我有下表换班。

AutoId StartTime       EndTime
1      08:00:00 AM     04:00:00 PM
2      04:00:00 PM     12:00:00 AM
3      12:00:00 AM     08:00:00 AM

现在我想自动为员工分配班次。

例如,如果有人在早上7:32到达,那么他的班次应该是第一班,即从上午08:00:00到下午4:00:00。如果有人在晚上11点45分到来,那么它应该自动设置为第三班。

我也希望如果员工在班次的第一个小时内进来,那么它也应该有用。

如何通过给员工InTime找到最近的班次?

1 个答案:

答案 0 :(得分:1)

类似的东西:

SELECT AutoId, StartTime, EndTime
  FROM Shifts
 WHERE StartTime = (SELECT MIN(StartTime) FROM Shifts WHERE DATEADD(hh, 1, StartTime) > inTime)

编辑:添加宽限期