En Oracle Database, podemos usar la siguiente técnica para devolver una fecha de un valor de marca de tiempo de Unix.
La marca de tiempo de Unix (también conocida como hora de época de Unix, hora de Unix o hora POSIX) es la cantidad de segundos que han transcurrido desde las 00:00:00 del jueves 1 de enero de 1970, hora universal coordinada (UTC).
Ejemplo
Aquí hay un ejemplo de cómo convertir una marca de tiempo de Unix en una DATE
valor:
SELECT
TO_DATE( '1970-01-01', 'YYYY-MM-DD' ) + NUMTODSINTERVAL( 1650321073, 'SECOND' )
FROM DUAL;
Resultado:
18-APR-22
Aquí, usamos el TO_DATE()
para construir una fecha de 1970-01-01. Luego agregamos nuestra marca de tiempo de Unix a esa fecha para obtener nuestro resultado. En este caso, usamos NUMTODSINTERVAL()
para convertir la marca de tiempo de Unix en un interval
valor. El resultado es una DATE
valor.
Obtener la fecha y la hora
Podemos usar el TO_TIMESTAMP()
función para generar una timestamp
valor:
SELECT
TO_TIMESTAMP( '1970-01-01', 'YYYY-MM-DD' ) + NUMTODSINTERVAL( 1650321073, 'SECOND' )
FROM DUAL;
Resultado:
18-APR-22 10.31.13.000000 PM
Otra forma de hacerlo es así:
SELECT TO_CHAR(
TO_DATE( '1970-01-01', 'YYYY-MM-DD' ) + numtodsinterval( 1650321073, 'SECOND' ),
'YYYY-MM-DD HH24:MI:SS'
)
FROM DUAL;
Resultado:
2022-04-18 22:31:13
Aquí, usamos el TO_CHAR()
función para mostrar el resultado devuelto por TO_DATE()
en nuestro formato preferido. Esta función devuelve su resultado como VARCHAR2
valor.