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

Come ottenere la data e l'ora correnti con l'offset del fuso orario in PostgreSQL

Problema:

Vorresti ottenere la data e l'ora correnti con le informazioni sul fuso orario da un database PostgreSQL.

Soluzione:

Useremo CURRENT_TIMESTAMP o NOW() per ottenere la data e l'ora correnti con l'offset del fuso orario.

SELECT CURRENT_TIMESTAMP ;

Ecco il risultato della query:

2019-09-15 13:13:12.118432+02

Discussione:

CURRENT_TIMESTAMP restituisce la data, l'ora e l'offset del fuso orario correnti (usando la data, l'ora e il fuso orario della macchina su cui è in esecuzione PostgreSQL). Viene restituito come valore in 'AAAA-MM-GG hh:mm:ss.nnnnnn+/-tz' formato. In questo formato:

  • AAAA è un anno a 4 cifre.
  • MM è un mese a 2 cifre.
  • DD è un giorno del mese a 2 cifre.
  • hh è un'ora a 2 cifre.
  • mm è un minuto a 2 cifre.
  • ss è un secondo a 2 cifre.
  • nnnnnn definisce il numero di secondi frazionari (cioè la precisione) da 0 a 6.
  • +tz o -tz è l'offset del fuso orario, più o meno da UTC.

Come puoi notare, questa funzione non ha parentesi. Tuttavia, se si desidera visualizzare una data e un'ora con una precisione specifica, è possibile utilizzare l'argomento intero facoltativo. Restituisce una data e un'ora con frazioni di secondi e l'offset del fuso orario. Questo argomento deve essere compreso tra 0 e 6; 0 non è una frazione di secondo, 1 è una frazione di secondo (ad es. una posizione dietro il decimale), ecc. Guarda il prossimo esempio:

SELECT CURRENT_TIMESTAMP(3) ;

Ecco il risultato della query:

2019-09-15 13:01:51.142+02

Questo risultato contiene un secondo frazionario di 3 cifre perché mettiamo 3 come argomento nella funzione CURRENT_TIMESTAMP. L'offset del fuso orario appare ancora alla fine.

Il tempo restituito da questa funzione non cambia durante le transazioni o una singola query. È sempre il momento in cui la transazione è iniziata.

NOW() è simile a CURRENT_TIMESTAMP funzione e restituisce lo stesso risultato. La differenza è che CURRENT_TIMESTAMP è la funzione standard SQL, mentre NOW() è specifica per PostgreSQL.

SELECT NOW() ;

Ecco il risultato della query:

2019-08-27 12:18:55.324145+02

Si noti che la funzione ORA() richiede parentesi. Tuttavia, puoi lasciarli vuoti e ottenere il valore predefinito.

CURRENT_TIMESTAMP e NOW() restituiscono il timestamptz tipo di dati.