sql >> Base de Datos >  >> RDS >> Oracle

Convierta una marca de tiempo de Unix en un valor de fecha en Oracle

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.