PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come convertire un timestamp Unix in un valore di data/ora in PostgreSQL

In PostgreSQL, possiamo usare to_timestamp() funzione per convertire un valore di timestamp Unix in un valore di data/ora.

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 semplice esempio da dimostrare:

SELECT to_timestamp(1912995045);

Risultato:

2030-08-15 03:30:45+00

In questo caso ho passato un valore di timestamp Unix specifico.

Ecco un altro esempio che dimostra ulteriormente come il risultato rifletta il valore del timestamp Unix fornito:

SELECT 
    now() AS "Current Date/Time",
    extract(epoch from now()) AS "Unix Timestamp",
    to_timestamp(extract(epoch from now())) AS "And back again...";

Risultato:

       Current Date/Time       |  Unix Timestamp   |       And back again...       
-------------------------------+-------------------+-------------------------------
 2022-04-19 19:25:27.068737+00 | 1650396327.068737 | 2022-04-19 19:25:27.068737+00

In questo esempio abbiamo usato now() per emettere la data e l'ora correnti. Abbiamo quindi utilizzato extract() per ottenere il timestamp Unix da quel valore di data e ora. Infine, abbiamo usato to_timestamp() per riconvertirlo al valore di data e ora originale.

Converti in data

Possiamo anche trasmettere il risultato come date valore per eliminare la parte temporale:

SELECT to_timestamp(1912995045)::date;

Risultato:

2030-08-15