none
Campo para Contabilizar RRS feed

  • Discussão Geral

  • Bom dia Pessoal, preciso criar um campo que contabilize as horas ate um outro campo ate mudar a situação, exemplo:

    Campo Situac = em atendimento, situação em atendimento as 9:10, a prox situação é Encerrado que as 9:50...preciso criar um campo que conte esse intervalo de minutos que foi de 40min.

    Alguém tem alguma ideia de como fazer isso?

    Obrigado.

    • Tipo Alterado Marcos SJ segunda-feira, 7 de março de 2016 12:35 How to
    segunda-feira, 7 de março de 2016 12:20

Todas as Respostas

  • O que você precisa é utilizar o timespan. Veja o exemplo:

    //ano, mês, dia, hora, minutos, segundos
    DateTime inicio = new DateTime(2016, 03, 07, 9, 10, 0);
    DateTime termino = new DateTime(2016, 03, 07, 9, 50, 0);
    TimeSpan ts = termino - inicio;
    double minutos = ts.TotalMinutes;
    

    segunda-feira, 7 de março de 2016 12:38
  • Bom dia,

    Você poderia ter dois campos, hora inicial e hora final, e depois fazer uma hora menos a outra para ter o tempo exato de duração.

    Ao abrir atendimento grava-se a hora inicial e ao encerrar hora final com isso obterá o tempo de duração do atendimento.


    Atenciosamente, Ruberlei. www.t-sql.com.br


    • Editado Ruberlei segunda-feira, 7 de março de 2016 12:40
    segunda-feira, 7 de março de 2016 12:39
  • Sim, mas o sistema não tem essa opção e não posso criar campo na tabela, estou fazendo isso por fora do sistema via sql para atender uma solicitação que recebi .
    segunda-feira, 7 de março de 2016 12:44
  • segunda-feira, 7 de março de 2016 12:50
  • Bom dia,

    Caso seja possível criar uma tabela, crie uma tabela com os campos chaves para identificar o atendimento e o campo hora final do atendimento (caso ja tenha hora inicial na tabela principal se não crie os dois) e apesar de não ser uma boa pratica, pode criar uma trigger que na alteração do situação grave nessa nova tabela o horário final.


    Atenciosamente, Ruberlei. www.t-sql.com.br

    segunda-feira, 7 de março de 2016 12:57
  • Bom dia,

    Pepe, qual versão do SQL Server você está utilizando?

    Qual é o tipo de dados da coluna que armazena o horário em que houve a mudança na situação?


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

    segunda-feira, 7 de março de 2016 13:12
  • É o SQL 2012 e o tipo é datetime.
    segunda-feira, 7 de março de 2016 13:42
  • Experimente fazer testes com a função Lead para obter o horário da próxima linha conforme exemplo abaixo:

    select
        *,
        DATEDIFF(MINUTE, Horario, LEAD(Horario, 1, 0) OVER(ORDER BY Horario)) as Intervalo
    from Tabela

    Espero que ajude


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


    • Editado gapimex segunda-feira, 7 de março de 2016 14:13
    segunda-feira, 7 de março de 2016 14:12