none
Calculo de Horas - Tipo "Time" RRS feed

  • Pergunta

  • Prezados Colegas, estou com a seguinte situação e preciso saber com prosseguir:

    Tenho a seguinte tabela

    OS         DATA          EXECUTANTE      LOCAL       HORA INICIO        HORA TÉRMINO

    0123     13/06/2013     ARNALDO       MANUTENÇÃO      09:00          10:00

    O calculo seria mais o menos assim: x= Hora Término - Hora Inicial

    x=total

    Segue abaixo a trigger:

    CREATE TRIGGER inht ON HHOMEM AFTER INSERT AS BEGIN --VARIAVEIS DECLARE @HH_OS VARCHAR(50) DECLARE @HH_DATA DATETIME DECLARE @HH_EXECUTANTE VARCHAR(50) DECLARE @HH_LOCAL VARCHAR(50) DECLARE @HH_INI TIME DECLARE @HH_FIN TIME --VARIAVEL CALC DECLARE @HH_TOL TIME --SELECIONA INFORMAÇÕES DA TABELA INSERTED SELECT @HH_OS =HH_OS, @HH_DATA=HH_DATA, @HH_EXECUTANTE=HH_EXECUTANTE, @HH_LOCAL=HH_LOCAL, @HH_INI=HH_INI, @HH_FIN=HH_FIN FROM INSERTED --CALCULO HORAS TOTAL HOMEM SELECT @HH_TOL=@HH_FIN-@HH_INI SELECT @HH_TOL --INSERIR INFORMAÇÕES NA TABELA HORAS TOTAL BEGIN INSERT INTO HTOTAL(HT_OS, HT_DATA, HT_EXECUTANTE, HT_LOCAL, HT_TOTAL) VALUES(@HH_OS, @HH_DATA, @HH_EXECUTANTE, @HH_LOCAL, @HH_TOL) END END

    Desde já agradeço a ajuda!

    Att, Fabio Roell.

    quinta-feira, 13 de junho de 2013 17:21

Respostas

  • Boa tarde,

    Fábio, experimente fazer um teste com o script abaixo:

    DECLARE @HH_INI TIME;
    DECLARE @HH_FIN TIME;
    DECLARE @HH_TOL TIME
    
    SET @HH_INI = '9:00';
    SET @HH_FIN = '10:45';
    
    SET @HH_TOL = DATEADD(MINUTE, DATEDIFF(MINUTE, @HH_INI, @HH_FIN), '00:00');
    
    SELECT @HH_TOL

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta Fábio Roell quinta-feira, 13 de junho de 2013 18:08
    quinta-feira, 13 de junho de 2013 17:51

Todas as Respostas

  • Boa tarde,

    Fábio, experimente fazer um teste com o script abaixo:

    DECLARE @HH_INI TIME;
    DECLARE @HH_FIN TIME;
    DECLARE @HH_TOL TIME
    
    SET @HH_INI = '9:00';
    SET @HH_FIN = '10:45';
    
    SET @HH_TOL = DATEADD(MINUTE, DATEDIFF(MINUTE, @HH_INI, @HH_FIN), '00:00');
    
    SELECT @HH_TOL

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta Fábio Roell quinta-feira, 13 de junho de 2013 18:08
    quinta-feira, 13 de junho de 2013 17:51
  • Obrigado "gapimex", adequei conforme seu script:

    CREATE TRIGGER inht ON HHOMEM
    AFTER INSERT
    AS
    BEGIN
    
    --VARIAVEIS
    DECLARE @HH_OS VARCHAR(50)
    DECLARE @HH_DATA DATETIME
    DECLARE @HH_EXECUTANTE VARCHAR(50)
    DECLARE @HH_LOCAL VARCHAR(50)
    DECLARE @HH_INI TIME
    DECLARE @HH_FIN TIME
    
    --VARIAVEL CALC
    DECLARE @HH_TOL TIME
    
    --SELECIONA INFORMAÇÕES DA TABELA INSERTED
    SELECT @HH_OS =HH_OS,
    @HH_DATA=HH_DATA,
    @HH_EXECUTANTE=HH_EXECUTANTE,
    @HH_LOCAL=HH_LOCAL,
    @HH_INI=HH_INI,
    @HH_FIN=HH_FIN
    FROM INSERTED
    
    --CALCULO HORAS TOTAL HOMEM
    --SELECT @HH_TOL=@HH_FIN-@HH_INI
    --SELECT @HH_TOL
    --ANTIGO COM ERROS
    
    --ADAPTAÇÃO "GAPIMEX" SEM ERROS
    SET @HH_TOL=DATEADD(MINUTE,DATEDIFF(MINUTE,@HH_INI,@HH_FIN),'00:00');
    SELECT @HH_TOL
    
    --INSERIR INFORMAÇÕES NA TABELA HORAS TOTAL
    
    BEGIN
    INSERT INTO HTOTAL(HT_OS,
    HT_DATA,
    HT_EXECUTANTE,
    HT_LOCAL,
    HT_TOTAL)
    VALUES(@HH_OS,
    @HH_DATA,
    @HH_EXECUTANTE,
    @HH_LOCAL,
    @HH_TOL)
    END
    END

    Muito obrigado.

    Para que existe o erro? Para que possamos corrigir e nos tornar profissionais cada vez melhores!

    Att, Fabio Roell

    quinta-feira, 13 de junho de 2013 18:07