Como fazer Cálculos com Data e Hora superior a 24H no Access

Como fazer Cálculos com Data e Hora superior a 24H no Access

Se você quer realmente aprender a trabalhar e fazer cálculos com Data e Horas no Access, veja na íntegra este artigo. Como fazer Cálculos com Data e Hora superior a 24H no Access

O grande detalhe para fazer cálculos com Data e Hora é entender como este tipo de dado funciona no Access.

Este tipo de dado é considerado como Ponto Flutuante, ou seja, é um tipo de dado que pode ser representado por meio de uma notação científica.

Exemplo: 52,345 = 0,52345 x 10^5

Mas isso tem muita importância. O mais importante é saber que as Datas e Horas são tratadas como números pelo Access.

Para auxiliar esta compreensão, vou utilizar a consulta do Access e a Função CDup() ou Cdbl() para comprovar o que estamos falando.

accessfacil.com

Na consulta acima, a função CDup() em Português ou CDbl() em Inglês para ser utilizada em nível de VBA, ela transforma o valor que esta no formato de Data/Hora no formato de número.

Assim, ao executarmos a consulta teremos o seguinte resultado:

accessfacil.com

No Access, os valores que estão a Esquerda da vírgula, representam as Datas e os valores que estão a Direita da vírgula representam as Horas, ou seja:

  • No 1º registro: 42504 representa 14/05/2016 e 0,5833333333 representa 14:00
  • No 2º registro: 42899 representa 13/06/2017 e 0,75 representa 18:00
  • No 3º registro: 43326 representa 14/08/2018 e 0,9166666667 representa 22:00

Para tirarmos a “prova dos 9”, vou fazer o processo inverso. Vou utilizar a funão CData() para converte o número em Data/Hora

accessfacil.com

Assim, ao executarmos a consulta voltaremos ao resultado anterior que está definido no campo Data.

accessfacil.com

Até aqui tudo normal, não é mesmo???

Agora vamos incrementar mais este tutorial!!

Com base nas formações acima, fica mais fácil calcular, por exemplo as horas trabalhadas de um colaborador dentro da empresa.

Vamos mostrar uma nova tabela com as seguintes informações abaixo:

accessfacil.com

Vamos calcular as horas trabalhadas destes 4 colaboradores. Para isto vamos calcular a diferença e incluir a função CData() para converter o resultado em formato de Data/Hora

accessfacil.com

Após executarmos a consulta teremos o total calculado das horas trabalhadas de cada colaborador.

accessfacil.com

Agora vamos adicionar mais um registro, no caso, as horas trabalhadas do colaborador Kleber Caetano que neste mesmo dia entrou as 17:30 e só saiu as 2 horas da manhã do dia 01/01/2020. Ao executarmos a consulta teremos o seguinte resultado:

accessfacil.com

Note que o cálculo esta correto, embora o colaborador tenha saído no dia seguinte. Neste caso a Data é o campo da esquerda da vírgula e neste caso ele é maior que a DataEntrada, fazendo o calculo normalmente de 08:30 de horas trabalhadas.

Agora se fosse o calculo das Horas. Como ficaria estes calculos???

accessfacil.com

Repare que as horas trabalhadas do colaborador Kleber Caetano está incorreta. O Access não consegue entender este cálculo, uma vez que a fórmula que utilizamos é a diferença entre a HoraSaida e a HorraEntrada.

Para resolvermos esta situação, temos que adicionar 1 dia ao término do trabalho. Teremos que criar uma condicional para saber se a HoraSaida é menor que a HoraEntrada. Para estes caso devemos adicionar 1 dia. Veja no exemplo abaixo:

accessfacil.com

Segue o Construtor de Expressões para entender melhor a fórmula criada:

accessfacil.com

Agora vamos calcular o total de horas trabalhadas deste 5 colaboradores.

accessfacil.com

Ao executarmos esta nova consulta para calcular esta soma, o Access automaticamente transforma esta Data para numero. Isto acontece porque o Access não calcula quando ultrapassa 24 horas. Neste caso, o resultado da soma será:

accessfacil.com

Quando transformamos este resultado para o formato Data/Hora, teremos o seguinte resultado:

accessfacil.com

O que o Access fez na verdade para chegar neste resultado??

Vamos lá….O resultado da soma das horas trabalhadas dos 5 colaboradores darão, calculando manualmente, 52 Horas.

Assim, como a soma ultrapassa as 24 horas, o Access adiciona 2 dia à data e subtraiu as 24 horas no cálculo referente às horas, ficando assim:

2 dia (52 Horas – 48 Horas) = 2,166666667

Assim vamos transformar este número em formato de Data

CData(2) = 01/01/1900 e CData(0,166666667) = 04:00

E como poderemos resolver esta situação. Uma saída é transformarmos todos os horários para segundo. Para isso, usaremos a função DifData() no campo calculado chamado de Total2.

accessfacil.com

Segue o Construtor de Expressões para entender melhor a fórmula criada:

accessfacil.com

Ao executarmos a consulta teremos os horários transformados para segundos e do tio inteiro longo

accessfacil.com

Agora basta somar o campo Total2, que representa o Total de Horas trabalhadas em segundos e depois formatar este campo para hh:mm

accessfacil.com
accessfacil.com

Até o próximo tutorial!

Um forte abraço!

Aldir Oliveira

6 comentários


  1. Aldir, o conteúdo sobre calculo de horas no access ficou excelente, bem esclarecedor, agradeço por este conhecimento, sigo inscrito no seu canal e acompanhando todos os vídeos sobre access, muito obrigado e sucesso.

    Responder

    1. Luiz! Este é meu intuito…Compartilhar com a comunidade o conhecimento desta ferramenta tão magnífica e pouco explorada. Obrigado pelo Retorno!

      Responder

  2. Boa dia Amigo
    Gostaria de calcular a horas entre duas datas em uma tabela
    estou com dificuldade
    Agradeço desde já

    Responder

    1. Opa! Para que eu possa compreender, descreva aqui a sua dúvida, blz? Abs

      Responder

  3. Obrigado pelo tutorial, muito bom, só não entendi como formatar o total de segundos, para chegar a 52 horas..
    Abraços

    Responder

    1. Em breve irei fazer um vídeo sobre isso. Fique ligado no canal.

      Responder

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *