Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
natanalb
Contributor II
Contributor II

Calculo de horas comerciais entre datas

Pessoal, boa tarde.

É possivel realizar o cálculo de tempo (horas comerciais) entre datas?

Levando em conta que o horário comercial é das 8:00hrs ás 18hrs.

Exemplo:

Preciso calcular a quantidade de horas comerciais gastas em um evento iniciado as 10hrs e encerrado as 15hrs do dia seguinte, respeitando o horário comercial na contagem.

DATA INICIO_ VS DATA FIM_ = Xhoras comerciais.

8 Replies
Anonymous
Not applicable

Natan, como estão as informações.

Data Inicio

Hora Inicio

Data Fim

Hora Fim ?

Ou estão em um mesmo campo Data e Hora?

natanalb
Contributor II
Contributor II
Author

Estão em campos separados

DATA_A  

HORA_A

Anonymous
Not applicable

Natan, acredito que esse é o resultado que vc queira

=MakeTime((IF([DATA FIM]>[DATA INICIO],[DATA FIM]-[DATA INICIO]-1, 0) * 10) + hour(interval(if([HORA FIM]<[HORA INICIO],(1-[HORA INICIO])+[HORA FIM],[HORA FIM]-[HORA INICIO])))

, minute(interval(if([HORA FIM]<[HORA INICIO],(1-[HORA INICIO])+[HORA FIM],[HORA FIM]-[HORA INICIO])))

, second(interval(if([HORA FIM]<[HORA INICIO],(1-[HORA INICIO])+[HORA FIM],[HORA FIM]-[HORA INICIO]))))

Anonymous
Not applicable

Só não fiz uma validação de dias úteis...

natanalb
Contributor II
Contributor II
Author

Obrigado Daniel, irei checar.

Você poderia me explicar a lógica de -"1, 0) * 10)"?

abs,

Anonymous
Not applicable

Esse cálculo * 10 é para calcular o dia cheio...

Mas acho que vai dar um problema se tiver a seguinte situação

01/10/2018 as 10h00

02/10/2018 as 9h00

Já estou vendo aqui

natanalb
Contributor II
Contributor II
Author

Daniel,

A sua formula funcionou apenas para a calculo entre datas do mesmo dia... calculo de datas entre dias diferentes o valor ficou nulo

teste_.JPG

MakeTime((IF([DATA info OK]>[DATA do 1º e-mail],[DATA info OK]-[DATA do 1º e-mail]-1, 0) * 10) + hour(interval(if([HORA info OK]<[HORA do 1º e-mail],(1-[HORA do 1º e-mail])+[HORA info OK],[HORA info OK]-[HORA do 1º e-mail])))

, minute(interval(if([HORA info OK]<[HORA do 1º e-mail],(1-[HORA do 1º e-mail])+[HORA info OK],[HORA info OK]-[HORA do 1º e-mail])))

, second(interval(if([HORA info OK]<[HORA do 1º e-mail],(1-[HORA do 1º e-mail])+[HORA info OK],[HORA info OK]-[HORA do 1º e-mail]))))   as campoteste,

natanalb
Contributor II
Contributor II
Author

Outras situações também

Data Início - 01:30 am (mesmo dia)

Data Fim  - 11:15 am (mesmo dia)

resultado = 11 horas e 15 minutos

o correto seria respeitar o horário comercial 8AM-18PM