Consulta SQL Server - Manipulação de Datas
Boa tarde,
Estou precisando criar uma consulta em SQL SERVER que faça a seguinte situação:
Tenho uma aplicação que tem 3 Ordem de Serviço, todas para setores executantes diferentes. Preciso somar as horas de paradas dessa aplicação, separando o intervalo equivalente. Por exemplo:
O.S. 0001 - Aplicação A. Inicio: 10/03/21 08:00 ate 10:00 - Total de horas 2 Horas.
O.S. 0002 - Aplicação A. Inicio: 10/03/21 08:30 ate 09:30 - Total de horas 1 Horas.
O.S. 0001 - Aplicação A. Inicio: 10/03/21 09:00 ate 10:30 - Total de horas 1:30 Horas.
O.S. 0001 - Aplicação A. Inicio: 10/03/21 12:00 ate 13:30 - Total de horas 1:30 Horas.
Total geral de parada dessa aplicação seria 04:00 que é o intervalo entre 08:00 ate 10:30, mais o intervalo 12:00 ate 13:00 e não a soma final de cada O.S. ,porem não estou conseguindo elaborar uma logica para isso.
Estou precisando criar uma consulta em SQL SERVER que faça a seguinte situação:
Tenho uma aplicação que tem 3 Ordem de Serviço, todas para setores executantes diferentes. Preciso somar as horas de paradas dessa aplicação, separando o intervalo equivalente. Por exemplo:
O.S. 0001 - Aplicação A. Inicio: 10/03/21 08:00 ate 10:00 - Total de horas 2 Horas.
O.S. 0002 - Aplicação A. Inicio: 10/03/21 08:30 ate 09:30 - Total de horas 1 Horas.
O.S. 0001 - Aplicação A. Inicio: 10/03/21 09:00 ate 10:30 - Total de horas 1:30 Horas.
O.S. 0001 - Aplicação A. Inicio: 10/03/21 12:00 ate 13:30 - Total de horas 1:30 Horas.
Total geral de parada dessa aplicação seria 04:00 que é o intervalo entre 08:00 ate 10:30, mais o intervalo 12:00 ate 13:00 e não a soma final de cada O.S. ,porem não estou conseguindo elaborar uma logica para isso.
Fabrício Vieira
Curtidas 1
Respostas
Samuel Goularte
11/03/2021
Bom dia Fabrício,
trabalhar com contador de horas é sempre uma dor de cabeça ;)
Acredito que a primeira regra a ser desenvolvida neste contador seja a validação entre o fim da primeira parada e o inicio da segunda parada. No seu exemplo, vc tem que desconsiderar o inicio de um parada que seja menor que o final da para anterior (o ideal seria que o sistema que abre a OS impeça que isso aconteça) e a partir dai use o DATEDIFF(minute, fim_parada, inicio_parada); que vai lhe retornar um valordo tipo integer resultante da diferença de tempo do período.
trabalhar com contador de horas é sempre uma dor de cabeça ;)
Acredito que a primeira regra a ser desenvolvida neste contador seja a validação entre o fim da primeira parada e o inicio da segunda parada. No seu exemplo, vc tem que desconsiderar o inicio de um parada que seja menor que o final da para anterior (o ideal seria que o sistema que abre a OS impeça que isso aconteça) e a partir dai use o DATEDIFF(minute, fim_parada, inicio_parada); que vai lhe retornar um valordo tipo integer resultante da diferença de tempo do período.
GOSTEI 0