[firebase-br] RES: RES: Converter segundos em HH:MM:SS
Zottis
bzottis em ig.com.br
Seg Ago 9 18:08:07 -03 2010
Criei essa Procedure,
Tenta aí
Se não der certo, serve de base para o que você precisa.
SET TERM ^ ;
CREATE OR ALTER PROCEDURE SP_SEGSTOHMS (
secs bigint)
returns (
hr varchar(10),
hora varchar(10),
minutos varchar(2),
segundos varchar(2))
as
declare variable hrs integer;
declare variable minut integer;
declare variable secs_aux integer;
declare variable aux numeric(15,2);
declare variable hr_str varchar(2);
declare variable min_str varchar(2);
declare variable seg_str varchar(2);
begin
if (secs > 0) then
begin
hora = '00';
min_str = '00';
seg_str = '00';
Hrs = cast(secs / 3600 as integer);
if (hrs < 10) then
begin
hr_str = '0' || HRS;
end else
if (hrs >= 10) then
begin
hr_str = HRS;
end
secs = secs -(hrs * 3600);
if (SECS = 0) then
bEGIN
min_str = '00';
seg_str = '00';
END ELSE
if (SECS < 10) then
bEGIN
min_str = '0' || secs;
seg_str = '00';
END ELSE
if ((SECS > 10)AND (SECS <= 60)) then
bEGIN
min_str = secs;
seg_str = '00';
END ELSE
if (SECS > 60) then
begin
minut = CAST(secs / 60 AS INTEGER);
secs = secs -(minut * 60);
if (SECS < 10) then
bEGIN
seg_str = '0' || SECS;
END ELSE
if (SECS > 10) then
bEGIN
seg_str = SECS;
END
END
HORA = hr_str || ':' || min_str || ':' || seg_str;
end else
HORA = '00:00:00';
hr = hrs;
minutos = minut;
segundos = SECS;
/*{ Converter Hora HH:MM:SS em Hora Decimal
- Dividir os segundos por 60 e somar ao minutos
- Dividir o resultado acima por 60 e adicionar às horas
ex: 13:35:42
- 42/60 = 0.7 -> 35.7
- 35.7/60 = 0.595 -> 13.595 que é a hora decimal
Converter a Hora Decimal em HH:MM:SS
- Multiplicar a parte fraccional por 60 -> a parte inteira são os
minutos
- Multiplicar a parte fraccional do resultado anterior por 60 -> a parte
inteira são os segundos
Ex: 13.595
- 0.595*60 = 35.7 -> 35 minutos
- 0.7* 60 = 42 -> 42 segundos
resultado = 13:35:42 }
*/
suspend;
end^
SET TERM ; ^
Mais detalhes sobre a lista de discussão lista