Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Converter um carimbo de data/hora Unix em um valor de data no Oracle


No Oracle Database, podemos usar a técnica a seguir para retornar uma data de um valor de carimbo de data/hora Unix.

O timestamp Unix (também conhecido como Unix Epoch time, Unix time ou POSIX time) é o número de segundos decorridos desde 00:00:00 de quinta-feira, 1 de janeiro de 1970, Coordinated Universal Time (UTC).

Exemplo


Aqui está um exemplo de conversão de um timestamp Unix para um DATE valor:
SELECT 
    TO_DATE( '1970-01-01', 'YYYY-MM-DD' ) + NUMTODSINTERVAL( 1650321073, 'SECOND' )
FROM DUAL;

Resultado:
18-APR-22

Aqui, usamos o TO_DATE() função para construir uma data de 1970-01-01. Em seguida, adicionamos nosso timestamp Unix a essa data para obter nosso resultado. Neste caso, usamos NUMTODSINTERVAL() para converter o timestamp Unix em um interval valor. O resultado é uma DATE valor.

Obter a data e hora


Podemos usar o TO_TIMESTAMP() função para gerar um 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

Outra forma de fazer é assim:
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

Aqui, usamos o TO_CHAR() função para gerar o resultado retornado por TO_DATE() em nosso formato preferido. Esta função retorna seu resultado como um VARCHAR2 valor.