Converta segundos para horas, minutos e segundos

Este código converte valores em segundos para o formato hora, minuto e segundo:

select to_char(trunc(/60/60),'09') ||
to_char(trunc(mod(,3600)/60),'09') ||
to_char(mod(mod(,3600),60),'09')
from dual;


Para testar nosso script, no SQL *Plus, procederemos da seguinte forma:

SQL> variable n number

SQL> exec :n := 3000;

PL/SQL procedure successfully completed.

SQL> select to_char(trunc(:n/60/60),'09') ||
2 to_char(trunc(mod(:n,3600)/60),'09') ||
3 to_char(mod(mod(:n,3600),60),'09')
4 from dual;

TO_CHAR(T
---------
00 50 00

SQL> exec :n := 45

PL/SQL procedure successfully completed.

SQL> /

TO_CHAR(T
---------
00 00 45

SQL> exec :n := 3770;

PL/SQL procedure successfully completed.

SQL> /

TO_CHAR(T
---------
01 02 50