Sommario: in questo tutorial, imparerai a conoscere i tipi di dati timestamp PostgreSQL tra cui timestamp
e timestamptz
. Imparerai anche come utilizzare alcune utili funzioni per gestire i dati di timestamp in modo più efficace.,
Introduzione a PostgreSQL timestamp
PostgreSQL fornisce due temporale tipi di dati per la gestione di timestamp:
-
timestamp
: un timestamp senza timezone uno. -
timestamptz
: timestamp con un fuso orario.
Il tipo di dati timestamp
consente di memorizzare sia la data che l’ora. Tuttavia, non ha dati di fuso orario., Significa che quando si modifica il fuso orario del server di database, il valore di timestamp memorizzato nel database non cambierà automaticamente.
Il tipo di datitimestamptz
è il timestamp con il fuso orario. Il tipo di datitimestamptz
è un tipo di dati di data e ora in base al fuso orario.
PostgreSQL memorizza iltimestamptz
nel valore UTC.
- Quando si inserisce un valore in una colonna
timestamptz
, PostgreSQL converte il valoretimestamptz
in un valore UTC e memorizza il valore UTC nella tabella., - Quando si esegue una query
timestamptz
dal database, PostgreSQL converte il valore UTC nel valore temporale del fuso orario impostato dal server del database, dall’utente o dalla connessione al database corrente.
si Noti che sia il timestamp
e timestamptz
utilizza 8 byte per memorizzare i valori di timestamp, come illustrato nella seguente query:
Code language: SQL (Structured Query Language) (sql)
e ‘ importante notare che timestamptz
valore viene memorizzato come un valore UTC. PostgreSQL non memorizza alcun dato di fuso orario con il valoretimestamptz
.,
Esempio di timestamp di PostgreSQL
Diamo un’occhiata a un esempio di utilizzo ditimestamp
etimestamptz
per avere una migliore comprensione di come PostgreSQL li gestisce.
In primo luogo, creare una tabella che consiste di entrambe le colonnetimestamp
timestamptz
.
Code language: SQL (Structured Query Language) (sql)
Quindi, impostare il fuso orario del server di database suAmerica/Los_Angeles
.,
Code language: SQL (Structured Query Language) (sql)
a proposito, si può vedere il fuso orario corrente utilizzando il SHOW TIMEZONE
comando:
Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)
Quindi, inserire una nuova riga nella timstamp_demo
tabella:
Dopo di che, eseguire query sui dati dal tag timestamp
e timestamptz
colonne.
Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)
La query restituisce gli stessi valori di timestamp dei valori inseriti.,
Infine, modificare il fuso orario della sessione corrente inAmerica/New_York
e interrogare nuovamente i dati.
Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)
Il valore del timestamp
colonna non cambia, considerando che il valore del timestamptz
colonna è regolato al nuovo fuso orario di 'America/New_York'
.
In generale, è buona norma utilizzare il tipo di datitimestamptz
per memorizzare i dati di timestamp.,>
Per gestire dati timestamp in modo efficace, PostgreSQL fornisce alcune utili funzioni come indicato di seguito:
di Ottenere l’ora corrente
Per ottenere il timestamp corrente si utilizza il tag NOW()
funzione come segue:
Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)
Oppure si può utilizzare il tag CURRENT_TIMESTAMP
:
Code language: SQL (Structured Query Language) (sql)
Per ottenere l’ora corrente, senza data, è possibile utilizzare CURRENT_TIME
:
Code language: SQL (Structured Query Language) (sql)
Nota che sia CURRENT_TIMESTAMP
e CURRENT_TIME
ritorna l’ora corrente con il fuso orario.,
Per ottenere l’ora del giorno nel formato stringa, si utilizza la funzione timeofday()
.
Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)
Conversione tra fusi orari
Per convertire un timestamp in un altro fuso orario, si utilizza la funzione timezone(zone, timestamp)
.
Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)
Il fuso orario corrente èAmerica/Los_Angeles
.,
To convert 2016-06-01 00:00
to America/New_York
timezone, you use the timezone()
function as follows:
Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)
Note that we pass the timestamp as a string to the timezone()
function, PostgreSQL casts it to timestamptz
implicitly., È meglio trasmettere un valore di timestamp al tipo di dati timestamptz
esplicitamente come la seguente istruzione:
Code language: SQL (Structured Query Language) (sql)
In questo tutorial, hai introdotto il tipo di dati timestamp PostgreSQL e mostrato come utilizzare alcune utili funzioni per manipolare i valori di timestamp.
- Questo tutorial è stato utile ?
- Sì
Lascia un commento