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

(Resolvido) TOTAL DE DIAS E HORAS ENTRE DATAS


Vinicius Schuh

Pergunta

Boa tarde amigos do Fórum! Preciso novamente de uma mão de vc's...

Tenho o seguinte SQL:

SELECT     
        dbo.tblOrdens_servico.ID As OS, 
        dbo.Clientes.NomeDoCliente, 
        dbo.tblOrdens_servico.DT_Os As Abertura, 
      dbo.tblOrdens_servico.HS_Abertura As Hora_Abe, 
      dbo.tblOrdens_servico.DT_Fechamento As Fechamento, 
        dbo.tblOrdens_servico.HS_Fechamento As Hora_Fec 
FROM
      dbo.Clientes LEFT JOIN
      dbo.tblOrdens_servico On dbo.Clientes.CódigoDoCliente = dbo.tblOrdens_servico.CD_Cliente 
INNER JOIN
      dbo.Funcionários On dbo.tblOrdens_servico.CD_Tecnico = dbo.Funcionários.CódigoDoFuncionário
ORDER BY 
        dbo.tblOrdens_servico.DT_Os, 
        dbo.tblOrdens_servico.HS_Abertura, 
        dbo.tblOrdens_servico.DT_Fechamento, 
        dbo.tblOrdens_servico.HS_Fechamento

Que me retorna os seguintes dados:

60744997.jpg

Estes dados são de ordens de serviço que foram efetuadas... Notem que existe a coluna Abertura, Hora_Aber, Fechamento e Hora_Fec, que seria o dia e a hora em que a OS foi aberta e o dia e a hora em que a OS foi fechada.

Preciso descobrir o intervalo entre a data e a hora de abertura com a data e a hora de fechamento.

Ex:

Abertura.............: 23/04/2011

Hora Abertura.....: 24:00

Fechamento........: 25/04/2011

Hora Fechamento: 01:01

Intervalo............: 1 dia, 1 hora e 1 minuto

Valeu!

Editado por Vinicius Schuh
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Fica um pouco complicada a manipulação... segue um exemplo:

CREATE TABLE #tabela (dia INT, hora int, minuto int)

INSERT INTO #tabela (dia)
SELECT DATEDIFF (hh,'2011-04-23 23:59', '2011-04-25 01:01') / 24 dia

update #tabela SET hora=(SELECT DATEDIFF (mi,'2011-04-23 23:59', '2011-04-25 01:01') / 60 
- (select dia FROM #tabela)*24)

update #tabela SET minuto=((SELECT DATEDIFF (mi,'2011-04-23 23:59', '2011-04-25 01:01')) -
((select dia FROM #tabela)*24*60 + (select hora FROM #tabela)*60))

select * FROM #tabela

OBS.: não fiz nenhum teste com outras datas. No horário de abertura de 24:00 hs, alterei para 23:59 hs por causa da formatação do sql.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia Fulvio, defini que irei mostrar apenas a diferença entre dias, ficou mais fácil hehe, consequentemente apenas usei a função DATEDIFF:

SELECT

dbo.tblOrdens_servico.ID As OS,

dbo.Clientes.NomeDoCliente,

dbo.tblOrdens_servico.DT_Os As Abertura,

dbo.tblOrdens_servico.HS_Abertura As Hora_Abe,

dbo.tblOrdens_servico.DT_Fechamento As Fechamento,

dbo.tblOrdens_servico.HS_Fechamento As Hora_Fec,

DATEDIFF(Day, dbo.tblOrdens_servico.DT_Os, dbo.tblOrdens_servico.DT_Fechamento) As Total_Dias,

dbo.tblOrdens_servico.TP_Fechada,

dbo.Funcionários.NomeDoFuncionário

FROM

dbo.Clientes

LEFT JOIN

dbo.tblOrdens_servico On dbo.Clientes.CódigoDoCliente = dbo.tblOrdens_servico.CD_Cliente

LEFT JOIN

dbo.Funcionários On dbo.tblOrdens_servico.CD_Tecnico = dbo.Funcionários.CódigoDoFuncionário

WHERE

(dbo.Funcionários.NomeDoFuncionário Is Not Null) And (dbo.tblOrdens_servico.TP_Fechada = 1)

ORDER BY

dbo.tblOrdens_servico.DT_Os,

dbo.tblOrdens_servico.HS_Abertura,

dbo.tblOrdens_servico.DT_Fechamento,

dbo.tblOrdens_servico.HS_Fechamento

Obrigado

Editado por Vinicius Schuh
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,8k
×
×
  • Criar Novo...