Расчет раннего и позднего прибытия для выполнения работы
Я пытаюсь рассчитать производительность доставки - я застрял в нескольких областях, и я надеюсь, что смогу получить некоторую помощь!
У меня есть приблизительная дата отгрузки, дата Appt и фактическая дата отгрузки.
Я измеряю производительность склада, поэтому в большинстве случаев отгрузки уходят в тот же день. Но в других случаях они могут уйти на несколько дней раньше или позже.
Проблема, с которой я сталкиваюсь, - это правильный вывод. Я хочу показать значения в DD:HH:MM, но синтаксис DateDiff не дает мне точного дня для использования:
Например, груз должен был уйти 6/3/2019 @ в 8 утра, но не покинул склад до 7/22/2019 @ 6:30 утра. В этом случае DateDiff вычисляет 49 дней, когда на самом деле его 48 дней опаздывают на 22 часа и 30 минут. Вот пример некоторого синтаксиса, который я использую:
Что я уже пробовал:
create table #test ( EstimatedShipDate datetime, AppointmentShipDate datetime, ActualShipDate datetime ); insert into #test values ('2019-07-01 11:00', '2019-07-01 11:00','2019-06-30 10:30'); insert into #test values ('2019-07-08 13:45', null,'2019-07-01 22:00'); insert into #test values ('2019-07-09 15:00', null,'2019-07-10 15:00'); insert into #test values ('2019-07-03 15:00', null,'2019-07-04 15:00'); insert into #test values ('2019-07-08 15:00', null,'2019-07-08 15:00'); insert into #test values ('2019-07-08 15:00', null,'2019-07-08 22:00'); insert into #test values ('2019-07-03 08:00', null,'2019-07-04 15:00'); insert into #test values ('2019-07-03 08:00', null,'2019-07-03 06:30'); insert into #test values ('2019-06-03 08:00', null,'2019-07-22 06:30'); --insert into test values (3, '2012-01-02 12:00'); Select EstimatedShipDate, AppointmentShipDate, ActualShipDate, DATEDIFF(DAY,ISNULL(CAST(AppointmentShipDate as DateTime),CAST(EstimatedShipDate as DateTime)), CAST(ActualShipDate as DateTime)) as Days, convert(varchar, CAST(ActualShipDate as DateTime)-ISNULL(CAST(AppointmentShipDate as DateTime),CAST(EstimatedShipDate as DateTime)),108) as DateSubtract_Convert, convert(varchar,ISNULL(CAST(AppointmentShipDate as DateTime),CAST(EstimatedShipDate as DateTime)-CAST(ActualShipDate as DateTime) ),108) as DateSubtract_ConvertEarly from #TEST
Используя приведенный выше пример вывод выглядит следующим образом:
EstimatedShipDate 2019-06-03 08:00:00.000 AppointmentShipDate null ActualShipDate 2019-07-22 06:30:00.000 Days 49 DateSubtract_Convert 22:30:00 DateSubtract_ConvertEarly 01:30:00
Любой совет очень ценится!
Afzaal Ahmad Zeeshan
Элементарная арифметика.