Я пытаюсь найти разницу во времени в минутах между двумя датами, но я хочу, чтобы разница учитывала время открытия магазина. Магазин работает только 9 часов в день и только в будние дни (выходные также закрыты), поэтому разница во времени должна учитывать время согласно рабочим часам.
Пример: 18.07.2009 9:50 - 22.07.2009 10:02
SELECT date_diff('minute', date_parse('7/18/2019 9:50:00 AM','%m/%d/%Y %h:%i:%s %p'), date_parse('7/22/2019 10:02:00 AM','%m/%d/%Y %h:%i:%s %p'))
Это дает ответ как 5772. Но я хочу, чтобы ответ был1092.
Формула Excel:
A1 = 7/18/2019 9:50 AM
B1 = 7/22/2019 10:02 AM
if(OR(A1="",A1="NULL",B1="",B1="NULL"),"",(A1-B1)*24*60 - (days(A1,B1)+1-NETWORKDAYS(A1,B1))*24*60 - (NETWORKDAYS(A1,B1)-1)*15*60)
Эта версия работает для меня, но есть ли лучший способ? Кроме того, если бы мы могли написать функцию на Presto, я не знаю, как написать вызываемую функцию на Presto.
with working_days AS
(
select count(*) as wd from unnest(sequence (cast('2017-06-07' as date), cast('2017-06-13' as date))) t(x)
WHERE extract (day_of_week from x) < 6
)
select date_diff('minute', cast('2017-06-07 11:19:11.287' as timestamp), cast('2017-06-13 09:53:14.750' as timestamp)) -
((date_diff('day', cast('2017-06-07' as date), cast('2017-06-13' as date))+1 - wd)*24*60 + (wd - 1)*16*60)
FROM working_days