[firebase-br] Operação com horas
Hélio Oliveira
hpensador em gmail.com
Sáb Fev 19 23:16:59 -03 2011
Desculpem colegas, após dar uma lida no livro Firebird Essecial Capítulo
17 (Manipulando datas e horas) do Carlos Cantu, encontrei a resposta. O
resultado é apresentado em segundos... fiz uma busca na net encontrei
alguns códigos mostrando como transformar o resultado em horas, minutos
e segundos, fiz algumas adaptações com a colaboração do amigo Itamar
Bermond e cheguei a um resultado satisfatório o qual compartilharei aqui.
create or alter procedure diferenca_entre_horas (
hora_incial time,
hora_final time)
returns (
permanencia time)
as
declare variable diferenca integer;
declare variable minutos integer;
declare variable segundos integer;
declare variable horas integer;
begin
if (:hora_final < :hora_incial) then
diferenca = (:hora_final - :hora_incial) + 86400;
else
diferenca = (:hora_final - :hora_incial);
segundos = :diferenca - :diferenca / 60 * 60;
diferenca = (:diferenca - :segundos) / 60;
minutos = :diferenca - :diferenca / 60 * 60;
diferenca = (:diferenca - :minutos) / 60;
horas = :diferenca - :diferenca / 60 * 60;
permanencia = cast((horas || ':' || :minutos || ':' || :segundos) as
time);
suspend;
end
--
[]'s,
Hélio Oliveira
Bel. Ciência da Computação
Técnico em Contabilidade
e-mail : hpensador em gmail.com
Skype : hpensador
www.hpensador.net
(71) 9975-9176
Mais detalhes sobre a lista de discussão lista