Мне нужно смоделировать дату и время окончания производственного заказа.Пример: производственный заказ занимает 4:55 часов, но у него может быть 1 или 2 перерыва и, возможно, 1 обеденный перерыв зависит от количества часов и текущего времени.Мне нужно рассчитать все время между текущим временем и временем производства.Я просто не знаю, будет ли полезен повторяющийся запрос.
create table [TeamBreak]
(
Team int ,
StartBreak datetime,
EndBreak datetime
);
insert into [TeamBreak] values
(1, '1900-01-01 09:00', '1900-01-01 09:15'),
(1, '1900-01-01 12:00', '1900-01-01 12:30'),
(1, '1900-01-01 14:15', '1900-01-01 14:30'),
(2, '1900-01-01 18:15', '1900-01-01 18:30'),
(2, '1900-01-01 01:15', '1900-01-01 01:30')
DECLARE @start AS datetime='2019-01-31 7:00'
DECLARE @end AS datetime='2019-01-31 11:50' --prodction end date without break
SELECT SUM(iif(@end BETWEEN t.startbreak AND t.endbreak, DATEDIFF(n,t.startbreak,@end), DATEDIFF(n,t.startbreak,t.endbreak))) AS newtime
FROM teambreak AS t
WHERE CAST(t.startbreak AS time)
BETWEEN CAST(@start AS time) AND CAST(@end AS time)
OR CAST(t.endbreak AS time) BETWEEN CAST(@start as time) AND CAST(@end AS time)
Кстати, разрыв должен быть в виде даты-времени, а не времени, потому что приложение фронта Access не поддерживает тип времени.
Давайте начнем в 7:00 утра (первая дата окончания без перерыва - 11: 55 или 4: 55), перерыв в 9:00 - 9:00 по обеденному времени 12:00 - 12:30 вечера.Результат должен составить 40 минут, чтобы добавить дату окончания производства вместо 15 минут.
Таким образом, это будет 7:00 + 4: 55 = 11: 55 + 15 минут (перерыв) = 12: 10 (но невозможно из-за времени обеда), поэтомуреальная дата окончания будет 12:40 вечера (потому что 12 ч - 12:30) выключен)..Моя первая дата окончания результата - 12:10 вечера, но хорошая должна быть 12:40 вечера