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 valore timestamptz 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 colonnetimestamptimestamptz.

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 ?