Нужна помощь в поиске ближайшего времени смены в SQL - PullRequest
0 голосов
/ 04 июня 2011

У меня есть следующая таблица для смен.

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 до 16:00:00. Если кто-то приходит в 23:45, то это должно быть автоматически установлено в качестве третьей смены.

Я также хочу, чтобы, если сотрудник пришел в течение первого часа смены, он также работал.

Как найти ближайшую смену, дав сотруднику InTime?

1 Ответ

1 голос
/ 04 июня 2011

Что-то вроде:

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

РЕДАКТИРОВАТЬ: Добавлен льготный период

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...