In PostgreSQL, possiamo usare extract() funzione insieme a epoch argomento per restituire il timestamp Unix.
Possiamo restituire il timestamp Unix in base alla data/ora corrente, oppure possiamo ottenerlo in base a un'altra data/ora specificata.
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).
Ottieni il timestamp Unix corrente
Ecco un esempio di come ottenere il timestamp Unix dalla data e dall'ora correnti:
SELECT extract(epoch from now()); Risultato:
1650152298.430101
Valori di data
Ecco un esempio di come ottenere il timestamp Unix da una date specificata valore:
SELECT extract(epoch from date '2030-08-15'); Risultato:
1912982400
Se utilizzato con date valori, epoch restituisce il numero nominale di secondi dal 1970-01-01 00:00:00, indipendentemente dal fuso orario o dalle regole dell'ora legale.
Valori timestamp
Ecco un esempio di come ottenere il timestamp Unix da un timestamp specificato valore:
SELECT extract(epoch from timestamp '2030-08-15 03:30:45'); Risultato:
1912995045
Se utilizzato con timestamp valori, epoch restituisce il numero nominale di secondi dal 1970-01-01 00:00:00, indipendentemente dal fuso orario o dalle regole dell'ora legale. È lo stesso di quando si utilizza date valori.
Timestamp con valore del fuso orario
Ecco un esempio di come ottenere il timestamp Unix da un timestamp with time zone specificato valore:
SELECT extract(
epoch from timestamp with time zone '2030-08-15 03:30:45.12-08'
); Risultato:
1913023845.12
Se utilizzato con timestamp with time zone valori, epoch restituisce il numero di secondi trascorsi dal 1970-01-01 00:00:00 UTC (negativo per timestamp precedenti)
Intervalli
Possiamo anche ottenere un timestamp Unix da un interval valore:
SELECT extract(epoch from interval '7 days 2 hours'); Risultato:
612000
Se utilizzato con interval valori, epoch restituisce il numero totale di secondi nell'intervallo.