Oracle - Parseo de Time Format

 
Vista:
sin imagen de perfil
Val: 13
Ha disminuido 1 puesto en Oracle (en relación al último mes)
Gráfica de Oracle

Parseo de Time Format

Publicado por McClane (5 intervenciones) el 28/11/2018 22:34:20
Buenos días. Esto no es necesariamente un tema de Oracle pero en definitiva necesito parsear la info para que suba mediante un CTL correctamente a una base Oracle.

Estoy recibiendo información en un archivo plano, donde los campos de "Time" me llegan en este formato que desconozco:

1519363588
1519269962
1473614911

No tengo la menor idea de como interpretar estos datos en formato tiempo. La intención es, como dije, parsearlos en el CTL para convertirlos al subirlos a Oracle. Alguien que me de una mano?

Desde ya muchas gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Parseo de Time Format

Publicado por Rafael (328 intervenciones) el 29/11/2018 10:18:48
Hola, McClane:

Primero espero no te ofendas ni molestes, pero la pregunta que haces es un poco jugar al adivino ...

En Oracle NO existen los campos TIME ...
https://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#SQLRF0021

Luego entonces NO puedo adivinar que quieres hacer con ellos ni donde los vas a contener mediante el LOADER (vaya que esto lo supondre por que hablas del CTL).

Otra cosa es que tampoco comentas el ORIGEN de los datos, con lo que saber que estas recibiendo es imposible, la bola de adivino hace unos meses que no funciona, disculpa las molestias.

Luego trabajemos algunos supuestos:

1. Que fuera una fecha juliana... esto es imposible
Ya que la fecha del calendario Juliano debe estar entre 1 y 5373484..
1 = 01/01/4712 AC
siendo 2458452 el dia de HOY (29/NOV/2018)
5373484 = 31/12/9999

Pero los numeros que proporcionas son: de 10 digitos... es decir por mucho mas grandes....

2. Ahora supondre que fuesen segundos... ya que hablas de time:
Usando el valor mas pequeño de los que proporcionas
1
SELECT NUMTODSINTERVAL(1473614911, 'SECOND')  FROM DUAL;
Devuelve: +17055 17:28:31.000000
Son demasiados dias un poco mas de 46 años....

3. Cabe una oportunidad de que me este acercando al dato o no... el proceso de adivinacion es dificil.
Ahora supondre que fuesen MILI segundos...
1
SELECT NUMTODSINTERVAL(1473614911/1000, 'SECOND')  FROM DUAL;
Resultado: +17 01:20:14.911000

Bueno si supiera el origen, el uso del dato, etc, podria afinar mas el proceso y dejaria de ser 100% adivinacion
Pero sigamos ...

Si fuese una fecha de nacimiento y el fihcero viniese por ejemplo de un sistema como DB2 o similar que usa de base 1900 ...
Podrias obtener lo siguiente:
1
2
3
4
5
6
7
8
SELECT TO_CHAR(TO_DATE('01/01/1900', 'DD/MM/YYYY') + NUMTODSINTERVAL(1473614911, 'SECOND'), 'DD/MM/YYYY HH24:MI:SS') RESULTADO
     , TO_CHAR(TO_DATE('01/01/1900', 'DD/MM/YYYY') + NUMTODSINTERVAL(1519363588, 'SECOND'), 'DD/MM/YYYY HH24:MI:SS') RESULTADO
     , TO_CHAR(TO_DATE('01/01/1900', 'DD/MM/YYYY') + NUMTODSINTERVAL(1519269962, 'SECOND'), 'DD/MM/YYYY HH24:MI:SS') RESULTADO
FROM DUAL;
 
RESULTADO           RESULTADO           RESULTADO
------------------- ------------------- -------------------
12/09/1946 17:28:31 24/02/1948 05:26:28 23/02/1948 03:26:02

Bueno espero te sirva, esto deberias poder ponerlo en el CTL para que cargue el dato ...


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 13
Ha disminuido 1 puesto en Oracle (en relación al último mes)
Gráfica de Oracle

Parseo de Time Format

Publicado por Diego (5 intervenciones) el 29/11/2018 17:52:35
Hola Rafael, ante todo mil gracias por tu detallada respuesta.

No, no me ofendo ni tomo a mal que me indiques que ofrecí poca información a la consulta, (aunque lo de adivino quedo claro la primera vez que lo mencionaste, quizás repetirlo tantas veces no era necesario sin rozar el sarcasmo hacia alguien que recién empieza en este mundo de programación y/o bases de datos).

Pero el tema es que justamente, yo también estaba adivinando. Hable de Loader y comente que subiría esto a Oracle para justificar porque me pareció mas apropiado poner mi consulta aquí, en el foro de Oracle y no otro, teniendo en cuenta la finalidad que va a tener. Solo por eso

Es un dato que me llega en un archivo plano, que se que hace referencia a tiempo por el titulo ("Time") y que no tengo forma de consultar (a la brevedad al menos, los motivos no vienen al caso) mas detalles que esto. Ergo no es que no quise dar mas info en mi consulta, es que simplemente, no la tengo.

Pense que quizás, y solo quizás, alguien viendo el formato sabría o se hubiera encontrado alguna vez con algo así y dijera... Ahhh! esto es eso. Si pongo que me llega un valor que es 20180101125634 todos lo entendemos rápidamente sin necesidad de consultar el origen de los datos (ya que son sistemas internos de mi compañía). Pero bueno, hay formatos mas complicados y me atreví a preguntar por si alguien al voleo lo detecta, con mas conocimiento que yo.

Único dato adicional que se me ocurre a los pocos que di, es que definitivamente, sea un intervalo de tiempo o una fecha puntual, la misma debe ser de no mas de unos pocos años, jamas llegar al año 1948 por ejemplo.

Asi que si, lo mismo que intentastes adivinar tu, lo estaba tratando de adivinar yo. Al parecer, si solo pueden resolverlo los adivinos, no es posible detectar como leer estos datos sin mas info. Solo que como mis conocimientos son acotados, no quise dejar de consultar antes de dar por sentado esa imposibilidad.

Nuevamente muchas gracias. En serio, valoro el tiempo que tomaste en redactar esas posibilidades que quizás, pegandole alguna vuelta mas, resuelvan lo que estoy intentando resolver..

Slds.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antonio
Val: 42
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Parseo de Time Format

Publicado por Antonio (13 intervenciones) el 05/12/2018 14:42:54
Mira, yo me sumo a lo explicado por Rafael, bueno lo de adivino lo veo como una broma.
Sólo te digo que si hubiese alguna referencia podría ser más fácil la interpretación de esos datos, los datos que pones son:
1519363588
1519269962
1473614911
pero si asociaras esos números con una hora o una fecha-hora espesífica, quizás se pordría buscar alguna interpretación.
ejemplo:
1519363588 ---> 05:40 pm o 23/10/2018 17:40:00
1519269962 ---> 10:20 am o 15/10/2016 10:20:00
1473614911 ---> 12:15 pm o 24/11/2010 12:15:00
y si hubiesen muchos más ejemplos sería mucho mejor, de esta manera, quezás, se podría buscarle un signifiacado a los nímeros.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 13
Ha disminuido 1 puesto en Oracle (en relación al último mes)
Gráfica de Oracle

Parseo de Time Format

Publicado por McClane (5 intervenciones) el 05/12/2018 23:06:02
Hola Antonio. Gracias por tu ayuda.

Si, mas ejemplos tengo literalmente millones, tratare de adjuntar algunos mas. Y lamentablemente no, no tengo referencia alguna a la información ya que es data de un sistema al que solo podemos acceder a través de un front end que no tiene este tipo de datos (son datos internos). Como veras, estoy complicado, no tengo mas info que esta. Por lo que obviamente estoy totalmente de acuerdo con que los datos son insuficientes para resolver el problema en forma simple, o incluso, resolverlo alguna vez.

No adjuntar mas info no es por pretender que alguien me resuelva los problemas sin colaborar yo mismo para que eso se consiga, sino, como dije anteriormente, que efectivamente no tengo mas data. Pero como soy muy limitado en los conocimientos de estas cosas, no quise pecar de no consultar suponiendo que "nadie puede entender un dato si no lo entiendo yo". Hay miles de cosas sin duda que alguien puede resolver a pesar que yo no puedo. No se si entiende mi posición...

Aun así, y a pesar que, insisto, creo que ser reiterativo en ese tipo de humor puede hacer sentir realmente mal a quien necesita ayuda por ser un principiante en estos temas, le estoy a Rafael infinitamente agradecido por su aporte. Me enseño cosas que no sabia, que sin duda utilizare en algun momento futuro. Y aun mas agradecido por el tiempo que dedico en su respuesta.

Tratare de adjuntar mas casos mañana e intentare ver si puedo obtener algún tipo de relación de algún dato o algo, solo se que no pueden ser (si efectivamente son fechas o si son lapsos de tiempo) datos que me lleven a mas allá de algunos pocos años.

Nuevamente gracias por todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Parseo de Time Format

Publicado por Rafael (328 intervenciones) el 07/12/2018 08:07:42
Perdona si sono a sarcasmo...

En fin una cosa...

Sabes el origen de los datos??? SQL server??? DB2???
Tienes idea de que representa el dato???

Esto ultimo aunque no tengas el diccionario de datos podria ser algo que aclarara mas el tema.

Ejemplo:
Subes un fichero con datos de cuentas... pues quizas podria ser la vigencia de la cuenta.
Subes un fichero con datos de traslados ... pues entonces son milisegundos y son 17 hrs...

en fin que de esto podrias tener mas pistas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar