Jump to content
Fórum Script Brasil
  • 0

Consulta em SQL Server 2008


Rafael Gazzatte

Question

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

  • 0

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

Link to comment
Share on other sites

  • 0

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...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...