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.