Jump to content
Fórum Script Brasil
  • 0

(Resolvido) TOTAL DE DIAS E HORAS ENTRE DATAS


Vinicius Schuh

Question

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!

Edited by Vinicius Schuh
Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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

Edited by Vinicius Schuh
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
      652.1k
×
×
  • Create New...