RES: [firebase-br] trabalhar com horas

Alexandre F. Banzatto banzatto em ig.com.br
Qui Out 7 09:50:51 -03 2004


Eu criei uma rotina para retornar a hora passando um período de tempo
De uma olhada abaixo:


CREATE PROCEDURE RET_HORAS_PERIODO (
    DT_HO_INICIO TIMESTAMP,
    DT_HO_TERMINO TIMESTAMP)
RETURNS (
    HORAS NUMERIC(18,9))
AS
DECLARE VARIABLE DIAS INTEGER;
DECLARE VARIABLE TEMP NUMERIC(18,9);
begin
  /* Retorna a quantidade de horas dentro do período */
  DIAS = 0; HORAS = 0; 
  TEMP = (DT_HO_TERMINO - DT_HO_INICIO);
  DIAS = TEMP - 0.5;
  TEMP = TEMP - DIAS;
  /* Adicionado para corrigir um possível bug no firebird 1.5 */
  TEMP = TEMP + 0.00000001;
  
  HORAS = (DIAS * 24) + (TEMP * 24);

End


Ela retorna a hora "centesimal"


-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Hernando
Enviada em: quinta-feira, 7 de outubro de 2004 09:24
Para: FireBase
Assunto: Re: [firebase-br] trabalhar com horas

ok otto gostei da sua sugestão,  o que pretendo fazer são calculos que 
não irão ultrapassar 12 horas, e a data não será importante pra mim, 
pois o que importa é só o tempo de fabricação da peça, então a minha 
ideia é criar uma SP pra que tranforme tudo em segundos e efetue o 
calculo como inteiro de depois vou gravar em um campo da tabela do tipo time
o resultado calculado, como extrair horas minutos e segundo em um campo 
time no firebird 1.0

exemplo:     02:48:30   horas:2 minutos 48 segundos 30



Otto escreveu:

>Eu usava horas centesimais. Você cria um algoritmo de conversão. Seis
>minutos representam um décimo de hora. Para converter minutos em centésimos
>de horas, é só dividir os minutos por 60. 15 minutos = 0,25 hora  (15/60 =
>0,25). Para fazer uma subtração que avance no dia seguinte, numa situação
>por exemplo, de um trabalho que começa às 22:15  horas de um dia e terminha
>a 01: 30 do dia seguinte, somar antes 24 horas a 01: 30 horas, e aí temos"
>25,50 - 22, 25 = 3.25, ou seja 3 horas e 15 minutos. Conferindo:
>- de 22:15 até 24:00 = 1:45 = 105 minutos
>- de 00:00 até 01:30 = 1:30 =   90 minutos
>Total 195 min
>195 / 60 = 3 horas.
>195 - 180 = 15 min
>
>No caso de envolver segundos, ampliar a granularidade, convertendo também
os
>segundos em horas em base decimal, lembrando-se que uma hora tem 3600
>segundos. 15 minutos tem 15 x 60 segundos igual a 900 segundos. Convertendo
>para décimos milésimos de horas temos:
>900/3600 = 0,2500
>[]s
>Otto
>
>
>----- Original Message ----- 
>From: "Hernando" <mecanvpcusto em mecan.com.br>
>To: "FireBase" <lista em firebase.com.br>
>Sent: Wednesday, October 06, 2004 8:52 AM
>Subject: [firebase-br] trabalhar com horas
>
>
>  
>
>>bom dia senhores!
>>
>>Senhores estou desenvolvendo um modulo para calculo de custo vou ter que
>>fazer muitos calculos com horas(tempo de produção) e estou tendo
>>dificuldade em efetuar esta operações como o exemplo abaixo:
>>
>>
>>qt
>>preparação da maq.
>>execução
>>tempo da op.
>>2
>>00:00:15
>>00:00:32
>>00:02:08
>>1
>>00:10:00
>>00:25:00
>>00:35:00
>>
>>
>>
>>tempo total da peça 00:37:08
>>
>>
>>além deste calculo tem outros mais,  tipo uma a operação custa R$ 10,00
>>quanto será 2 min e 8 seg? ou 35 mim conforme o exemplo.
>>além disso vou ter que fazer calculo percentual em cima de horas por
>>exemplo uma maquina que fica em operação por 8h48min tem 78% somente de
>>produtividade.
>>Se alguém tiver alguns exemplo pra me enviar eu vou ficar muito
>>    
>>
>agradecido.
>  
>
>>No momento estou usando o FB 1.0/D5. IBX
>>Já pensei em transformar tudo em segundos pra fazer os calculos, mas
>>acho que o trabalho já vai ser grande e acho que isso seria uma problema
>>a a mais.
>>
>>se alguém puder me dizer os comandos/funções no fb1.0 que trabalham com
>>horas já adiantaria muito.
>>já procurei por material do IB 6,0 mas não ajudou muito.
>>
>>
>>______________________________________________
>>FireBase-BR (www.firebase.com.br)
>>Para editar sua configuração na lista, use o endereço
>>    
>>
>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br)
>Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>
>  
>

______________________________________________
FireBase-BR (www.firebase.com.br)
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br





Mais detalhes sobre a lista de discussão lista