Converter horas em dias

12/02/2010

3

ola Delphianos,

pessoal tenho uma tabela com a seguinte estrutura:

PRESENCA (
    ID_FUNC                     INTEGER NOT NULL,
    DATA                           DATE NOT NULL,
    CODIGO                      INTEGER,
    CODIGOGERACAO       VARCHAR(20),
    ENTRADA                    CHAR(8),
    ALMOCO                     CHAR(8),
    RETORNO                   CHAR(8),
    SAIDA                         CHAR(8),
    DT_CADASTRO            DATE,
    HORA                          TIME,
    FECHADO                   CHAR(1) )

Utilizo para armazenar a batido do ponto. Tenho um relatorio que imprime as horas de entrada e saida e vai somando as hrs trabalhadas, hrs extras, hrs faltas e hrs noturnas.

Gostaria de pegar a soma das hrs faltas e converter em dias faltas, por exemplo, o funcionario teve no mes um total de 32:00:00 hrs faltas, convertendo para dias suponha que seja 08:00:00 hrs por dia, daria 4 dias de faltas. Nao sei se o calculo para achar os dias faltados de acordo com o numero de horas faltas seria este, de qualquer forma espero ajuda de vcs.


Obrigado.


Responder

Posts

12/02/2010

Edson Junior

Olá Iramar,

O que tu pede é uma simples conversão de hora para dia... isto é possivel se obter calculando:

total_dias = trunc(total_horas_falta/qtde_horas_dia = qtde_dias_falta)

é claro que total_horas_falta tem que ser maior que qtde_horas_dia se não, não há por que fazer a conta pois o resultado será inferior a 1.

E claro, lembrando que você precisará do resto da divisão para as horas que ficarão sobrando com mod

horas_falta = total_horas_falta mod qtde_dias_falta

assim tu terá o total_dias e o horas_falta

Ex:
total_horas_falta = 20
qtde_horas_dia = 8

total_dias = 2
horas_falta = 4

[]'s
Responder

12/02/2010

Marcos Iwazaki

primeiro transforme tudo em horas 32h 23m 50s
32h = 32h (isso não mexe)
23m = 0,38h  (p calcular isso se for a sua duvida faz uma regra de 3, 60m = 1h então 23 = X
              x = 23/60 ) 
50s = 0,0138 (siga o mesmo passo... mas aqui ficaria x = 50/3600, pois cada hora tem 3600 segundos

some todas as horas agora, aqui deu +- 32,39 (se não digitei nada errado)
agora faça 32,39/8
resultado = 4,04

flw.
espero ter ajudado.
Responder