Ir para conteúdo
Fórum Script Brasil
  • 0

Consulta em SQL Server 2008


Rafael Gazzatte

Pergunta

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 para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...