Tengo la siguiente tabla:

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

Aquí una sola línea de esta tabla:

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

Estoy bastante seguro de que este ha sido preguntado muchas veces antes, pero todas las soluciones que he encontrado hasta ahora en realidad no funciona, así que… ¿Cómo puedo convertir ESTIMATEDENDTIME original de la época formulario a un DD/MM/YYY HH:MI:SS formato en una sola consulta en SQLPLUS?

Gracias!

OriginalEl autor Oink | 2010-09-29

2 Comentarios

  1. 25

    En Oracle, la adición de X para una FECHA devolverá una FECHA X días más tarde.

    Si ESTIMATEDENDTIME es de milisegundos desde Época, entonces usted podría hacer

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

    y, a continuación, utilizar to_char para lograr el correcto formato de la fecha resultante. e.g:

    SELECT 
      captureid
    , startdate
    , enddate
    , state
    , estimatedendtime
    , DATE '1970-01-01' + ( 1 / 24 / 60 / 60 / 1000) * estimatedendtime AS estimatedenddate
    FROM recording
    Maldita sea! Eso es más rápido y más fácil que otras soluciones que yo estaba tratando! GRACIAS!

    OriginalEl autor Chris Cameron-Mills

  2. 0
    select ((timestamp_coloum_name - to_date('01-JAN-1970','DD-MON-YYYY')) * (86400)) from any_table;

    OriginalEl autor UserszrKs

Dejar respuesta

Please enter your comment!
Please enter your name here