From: | Miguel <mmiranda(at)123(dot)com(dot)sv> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | pasar de segundos a hh:mm:ss |
Date: | 2006-02-28 21:33:26 |
Message-ID: | 4404C1A6.4090209@123.com.sv |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola a todos, alguien tiene algun ejemplo que comparta con la lista de
como pasar una duracion en segundos al formato hh:mm:ss, un amigo me
hizo esta pero algo no esta bien y me devuelve valores extraños, por
ejemplo si la duracion es de 8 minutos (480 segundos), devuelve 7:60, o
sea 7 minutos 60 segundos en lugar de ocho
REATE OR REPLACE FUNCTION formatted_time(float8)
RETURNS "varchar" AS
$BODY$
declare
total_segundos alias for $1;
hora_dec float;
hora int;
minutos_dec float;
minutos int;
segundos_dec float;
segundos int;
cero_horas varchar;
cero_minutos varchar;
cero_segundos varchar;
string_hour varchar;
begin
hora_dec := round(cast(total_segundos/3600.00 as numeric), 5);
hora := floor(hora_dec);
hora_dec := hora_dec - hora;
if length(cast(hora as varchar)) = 1 then
cero_horas := '0';
else
cero_horas := '';
end if;
minutos_dec := round(cast(hora_dec * 60.00 as numeric),5);
minutos := floor(minutos_dec);
minutos_dec := minutos_dec - minutos;
if length(cast(minutos as varchar)) = 1 then
cero_minutos := '0';
else
cero_minutos := '';
end if;
segundos_dec := minutos_dec * 60.00;
segundos := round(cast(segundos_dec as numeric));
if length(cast(segundos as varchar)) = 1 then
cero_segundos := '0';
else
cero_segundos := '';
end if;
select into string_hour cero_horas || cast(hora as varchar) || ':'
|| cero_minutos || cast(minutos as varchar) || ':' || cero_segundos ||
cast(segundos as varchar);
return string_hour;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
saludos
From | Date | Subject | |
---|---|---|---|
Next Message | Mario Gonzalez | 2006-02-28 22:07:09 | PostgreSQL sobre Dual AMD Opteron 250 |
Previous Message | Joan Manuel Ventura | 2006-02-28 20:34:22 | pequeño problemita con la hora |