Oracle
 sql >> Database >  >> RDS >> Oracle

Converti un timestamp Unix in un valore di data in Oracle

In Oracle Database, possiamo utilizzare la tecnica seguente per restituire una data da un valore di timestamp Unix.

Il timestamp Unix (noto anche come Unix Epoch time, Unix time o POSIX time) è il numero di secondi trascorsi dalle 00:00:00 di giovedì 1 gennaio 1970, Coordinated Universal Time (UTC).

Esempio

Ecco un esempio di conversione di un timestamp Unix in un DATE valore:

SELECT 
    TO_DATE( '1970-01-01', 'YYYY-MM-DD' ) + NUMTODSINTERVAL( 1650321073, 'SECOND' )
FROM DUAL;

Risultato:

18-APR-22

Qui utilizziamo il TO_DATE() funzione per costruire una data di 1970-01-01. Quindi aggiungiamo il nostro timestamp Unix a quella data per ottenere il nostro risultato. In questo caso, utilizziamo NUMTODSINTERVAL() per convertire il timestamp Unix in un interval valore. Il risultato è un DATE valore.

Ottieni la data e l'ora

Possiamo usare TO_TIMESTAMP() funzione per produrre un timestamp valore:

SELECT 
    TO_TIMESTAMP( '1970-01-01', 'YYYY-MM-DD' ) + NUMTODSINTERVAL( 1650321073, 'SECOND' )
FROM DUAL;

Risultato:

18-APR-22 10.31.13.000000 PM

Un altro modo per farlo è questo:

SELECT TO_CHAR( 
    TO_DATE( '1970-01-01', 'YYYY-MM-DD' ) + numtodsinterval( 1650321073, 'SECOND' ), 
    'YYYY-MM-DD HH24:MI:SS'
    )
FROM DUAL;

Risultato:

2022-04-18 22:31:13

Qui utilizziamo il TO_CHAR() funzione per produrre il risultato restituito da TO_DATE() nel nostro formato preferito. Questa funzione restituisce il risultato come VARCHAR2 valore.