none
Realizar cálculos com horas no SQL Server RRS feed

  • Pergunta

  • Boa noite a todos, gostaria de apimentar mas esse fórum com essa dúvida! Digamos que seja registrado dessa forma:

    CREATE TABLE tblParadaManut (
    Eqpto CHAR(5),
    Status CHAR(1),
    Data SMALLDATETIME,
    Horario_Inicial SMALLDATETIME,
    Horario_Final SMALLDATETIME)

    INSERT INTO tblParadaManut VALUES (‘M0001′,’1′,’20090330′,’08:00:00′,‘08:23:00’)
    INSERT INTO tblParadaManut VALUES (‘M0001′,’3′,’20090330′,’08:23:00′,‘08:50:00’)
    INSERT INTO tblParadaManut VALUES (‘M0002′,’4′,’20090330′,’09:40:00′,‘10:23:00’)
    INSERT INTO tblParadaManut VALUES (‘M0002′,’5′,’20090330′,’10:23:00′,‘11:50:00’)
    INSERT INTO tblParadaManut VALUES (‘M0003′,’2′,’20090330′,’13:20:00′,‘15:00:00’)
    INSERT INTO tblParadaManut VALUES (‘M0003′,’3′,’20090330′,’15:00:00′,‘15:50:00’)
    INSERT INTO tblParadaManut VALUES (‘M0004′,’6′,’20090330′,’23:34:00′,‘00:00:00’)
    INSERT INTO tblParadaManut VALUES (‘M0004′,’1′,’20090330′,’00:00:00′,‘02:30:00’)

    Obs.: Conforme a mudança de status, e gravado um novo registro. Ou seja, se for no mesmo dia, mudará os horários. Conforme os dois insert iniciais!

    A pergunta, qual seria a melhor forma para deixar um único registro na view? Conforme exemplo abaixo.
    Ex: (‘M0001′,’20090330′,’08:00:00′,‘08:50:00’,’00:50:00′)

    quinta-feira, 1 de novembro de 2012 00:45

Respostas

  • Rob,

    veja se este script te ajuda;

    SELECT 
    	Eqpto
    	,CAST(data as DATE) Data
    	,MIN(horario_inicial) Data_Inicial
    	,MAX(horario_final) Data_Final
    	,CONVERT(VARCHAR, (MAX(horario_final) - MIN(horario_inicial)), 114) Diferenca
    FROM tblParadaManut
    GROUP BY Eqpto, CAST( data as DATE)

    se sim, não esqueça de marcar como resposta

    abs


    "Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta."

    Érica Tohoma | http://bloggirlsa.wordpress.com

    quinta-feira, 1 de novembro de 2012 16:21

Todas as Respostas

  • Cara, dê onde você tirou esse exemplo final?

    "Ex: (‘M0001′,’20090330′,’08:00:00′,‘08:50:00’,’00:50:00′)"

    De onde são esses dois horários 08:50:00?

    "...a melhor forma para deixar um único registro na view"

    Isso depende: o que você quer que a view retorne? Qual lógica (regra) deve ser aplicada na view?


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quinta-feira, 1 de novembro de 2012 15:42
    Moderador
  • Rob,

    veja se este script te ajuda;

    SELECT 
    	Eqpto
    	,CAST(data as DATE) Data
    	,MIN(horario_inicial) Data_Inicial
    	,MAX(horario_final) Data_Final
    	,CONVERT(VARCHAR, (MAX(horario_final) - MIN(horario_inicial)), 114) Diferenca
    FROM tblParadaManut
    GROUP BY Eqpto, CAST( data as DATE)

    se sim, não esqueça de marcar como resposta

    abs


    "Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta."

    Érica Tohoma | http://bloggirlsa.wordpress.com

    quinta-feira, 1 de novembro de 2012 16:21