Rafael Gazzatte Posted September 29, 2011 Report Share Posted September 29, 2011 Pessoal bom dia,estou com uma grande duvida e peço a ajuda do pessoal,eu estou usando sql server 2008,e eu tenho uma tabela por exemploPROD_PARADA,essa tabela tem os seguintes campos :IDPrincipal,IDMaquina,Periodo_Inicial,Periodo_Fim,IDMotivo,DT_JustEssa tabela,você representa uma maquina que ficou parada,você tem um IDMaquina para os joins das informaçõpes da maquina,um periodo inicial que é a data e hora que ficou paradae o periodo final que é a data e hora que a maquina voltou a ativa e porfim um IDMotivo para joins das justificações da maquina parada.Com as informações acima,consigo pegar quanto tempo a maquina ficouparada, logo periodo_Fim - periodo_Inicial da esse tempo para min.exemplo :Periodo_inicial = 2011-09-20 11:00:00.477Periodo_fim = 2011-09-20 15:00:00.343percebos que a maquina ficou parada 4 horas.o problema é que onde trabalho,existe 3 turnos que são eles :1 turno - 06:00 até 13:592 turno - 14:00 até 21:593 turno - 22:00 até 05:59---------------------------------------------------------------------Como eu conseguiria fazer uma consulta,como resultado saisse a divisãopelos turnos?Obrigado desde já,pessoal,bom dia a todos. Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted September 29, 2011 Report Share Posted September 29, 2011 Bom dia Rafael, Postei um exemplo de como poderá fazer esta separação. Algumas OBS.: - Há a possibilidade de ter horas negativas se utilizar o DATEDIFF, quando a máquina ficar parada das 23:00 as 03:00 hs (por exemplo). A quantidade de horas será ok, mas terá apenas um menos na frente. - Se a máquina ficar parada por mais de 1 dia, no case você terá que implementar os dias também, porque senão irá contar apenas as horas.DECLARE @Periodo_inicial DATETIME DECLARE @Periodo_fim DATETIME SET @Periodo_inicial='2011-09-20 11:00:00.477' SET @Periodo_fim='2011-09-20 15:00:00.343' select case WHEN DATEPART(hour, @Periodo_inicial) BETWEEN 6 AND 13 AND DATEPART(minute, @Periodo_inicial) <= 59 THEN '1 turno' WHEN DATEPART(hour, @Periodo_inicial) BETWEEN 14 AND 21 AND DATEPART(minute, @Periodo_inicial) <= 59 THEN '2 turno' ELSE '3 turno' end Quote Link to comment Share on other sites More sharing options...
0 Rafael Gazzatte Posted September 29, 2011 Author Report Share Posted September 29, 2011 fulvio,bom dia.Então,é isso que eu queria,só que no caso não queria que ficasse 1 turno,ou 2 turno,o que estou realmente precisando,é por exemplo MAQUINA X ficou 4 horas parada no primeiro turno,7 horas no segundo turno.Obrigado pela ajuda,ajudou muito,estou usando o case aqui para tentar ve se consigo fazer algo,está complicado... Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted September 29, 2011 Report Share Posted September 29, 2011 Precisando pode postar!! :.) Quote Link to comment Share on other sites More sharing options...
Question
Rafael Gazzatte
Pessoal bom dia,estou com uma grande duvida e peço a ajuda do pessoal,
eu estou usando sql server 2008,e eu tenho uma tabela por exemplo
PROD_PARADA,essa tabela tem os seguintes campos :
IDPrincipal,IDMaquina,Periodo_Inicial,Periodo_Fim,IDMotivo,DT_Just
Essa tabela,você representa uma maquina que ficou parada,
você tem um IDMaquina para os joins das informaçõpes da maquina,
um periodo inicial que é a data e hora que ficou parada
e o periodo final que é a data e hora que a maquina voltou a ativa e por
fim um IDMotivo para joins das justificações da maquina parada.
Com as informações acima,consigo pegar quanto tempo a maquina ficou
parada, logo periodo_Fim - periodo_Inicial da esse tempo para min.
exemplo :
Periodo_inicial = 2011-09-20 11:00:00.477
Periodo_fim = 2011-09-20 15:00:00.343
percebos que a maquina ficou parada 4 horas.
o problema é que onde trabalho,existe 3 turnos que são eles :
1 turno - 06:00 até 13:59
2 turno - 14:00 até 21:59
3 turno - 22:00 até 05:59
---------------------------------------------------------------------
Como eu conseguiria fazer uma consulta,como resultado saisse a divisão
pelos turnos?
Obrigado desde já,pessoal,bom dia a todos.
Link to comment
Share on other sites
3 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.