Pergunta

Eu tenho a tabela a seguir:

SQL> desc recording
 Name                 Null?    Type
 -------------------- -------- ------
 CAPTUREID            NOT NULL NUMBER(9)
 STARTDATE            NOT NULL DATE
 ENDDATE                       DATE
 STATE                         NUMBER(1)
 ESTIMATEDENDTIME              NUMBER(13)

Aqui está uma única linha para esta tabela:

SQL> select * from recording where CAPTUREID=14760457;

 CAPTUREID STARTDATE           ENDDATE             STATE ESTIMATEDENDTIME
---------- ------------------- ------------------- ----- ----------------
  14760457 29/09/2010 08:50:01 29/09/2010 09:52:04     0    1285746720000

Tenho certeza de que isso já foi perguntado tantas vezes antes, mas todas as soluções que encontrei até agora não funcionaram, então ... como faço para converter ESTIMATEDENDTIME de sua forma de época original para um DD/MM/YYY HH:MI:SS formato em uma única consulta no sqlplus?

Obrigado!

Foi útil?

Solução

No Oracle, adicionar x a uma data devolverá uma data x dias depois.

Se o tempo estimado for milissegundos desde a época, você pode fazer

DATE '1970-01-01' + ( 1 / 24 / 60 / 60 / 1000) * ESTIMATEDENDTIME

e depois use para_char para obter o formato correto da data resultante. por exemplo:

SELECT 
  captureid
, startdate
, enddate
, state
, estimatedendtime
, DATE '1970-01-01' + ( 1 / 24 / 60 / 60 / 1000) * estimatedendtime AS estimatedenddate
FROM recording

Outras dicas

select ((timestamp_coloum_name - to_date('01-JAN-1970','DD-MON-YYYY')) * (86400)) from any_table;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top