Intervallo di PostgreSQL

Intervallo di PostgreSQL
PostgreSQL è un popolare sistema di gestione del database relazionale. È un software open source che è popolare per la sua stabilità e supporto per vari standard tecnici aperti. È attivamente mantenuto dagli sviluppatori di tutto il mondo.

In questa guida, lavoreremo sull'intervallo di PostgreSQL.

Prerequisiti:

Per eseguire i passaggi dimostrati in questa guida, avrai bisogno dei seguenti componenti:

  • Un sistema Linux correttamente configurato. Ulteriori informazioni sull'installazione di Ubuntu in VirtualBox.
  • Una corretta installazione di PostgreSQL. Ulteriori informazioni sull'installazione di PostgreSQL su Ubuntu.

Intervallo in PostgreSQL

Per conservare e gestire i periodi di tempo (minuti, secondi, anni, ecc.), PostgreSQL offre il tipo di dati di intervallo.

  • La dimensione dell'intervallo è di 16 byte.
  • Può archiviare valori da -178000000 anni a 178000000 anni.
  • Sono disponibili diversi stili di intervallo, ad esempio Postgres (impostazione predefinita), Postgres_verbose, sql_standard, ISO_8601, ecc.
  • Sono possibili operazioni aritmetiche.

Il tipo di intervallo è il seguente:

$ @ intervallo

Qui:

  • È consentito un valore di intervallo per avere un valore di precisione P in cui il valore di P può variare da 0 a 6.
  • Il segno "@" è facoltativo, quindi può essere omesso in sicurezza.

Formati a intervalli

postgres_verbose
$

Dove:

  • quantità: un numero che può accettare "+" o "-".
  • Unità: sono supportate varie unità temporali. Ad esempio: decennio, secolo, mese, giorno, settimana, ora, secondo e abbreviazioni (d, m, y, ecc.). Le forme plurali sono anche supportate (giorni, mesi, ecc.).

Questo è il formato postgres_verbose che è comune per i formati di output di intervalli.

ISO 8601

La struttura del formato ISO 8601 con i designatori è la seguente:

$ PT

Qui:

  • Il valore inizia con "p".
  • Il valore che segue la "T" indica l'ora del giorno.

Le seguenti abbreviazioni dell'unità sono disponibili in ISO 8601:

  • Y: anni
  • M: mesi (entro la sezione data)
  • W: settimane
  • D: giorni
  • H: ore
  • M: minuti (entro la sezione tempo)
  • S: secondi

Ecco un esempio di intervallo in formato ISO 8601 (con designatori):

$ P5y4m3dt2h1m2s

C'è un formato alternativo di ISO 8601. La struttura è la seguente:

$ PT

Ecco lo stesso esempio di intervallo nel formato alternativo ISO 8601:

$ P0005-04-03T02: 01: 02

Usando i valori di intervallo

In questa sezione, dimostreremo i vari modi di utilizzare i valori dell'intervallo nelle query PostgreSQL.

Uso di base
Dalla shell PostgreSQL, eseguire la seguente query:

SELEZIONARE

Ora (), ora () - intervallo '1 anno 3 ore 20 minuti'
Come "3 ore 20 minuti fa dello scorso anno";

Qui:

  • La funzione Now () restituisce la data e l'ora correnti.
  • Sottraggiamo "1 anno 3 ore 20 minuti" da ora () per ottenere il valore desiderato.
  • Utilizzando l'istruzione AS, specifichiamo un nome per la seconda colonna dell'output.

Formati di output a intervalli

In PostgreSQL, possiamo specificare il formato di output di un valore di intervallo usando il seguente comando:

$ Set intervallistyle = '';

Ci sono un paio di formati disponibili:

  • sql_standard
  • Postgres
  • postgres_verbose
  • ISO_8601

Mettiamo in azione questo comando. Le seguenti domande mostrano l'output dell'intervallo in diversi formati:

Imposta intervalliStyle = 'sql_standard';
Seleziona intervallo '5 anni 4 mesi 3 giorni 2 ore 1 minuto 2 secondi';
Imposta intervalli style = 'postgres';
Seleziona intervallo '5 anni 4 mesi 3 giorni 2 ore 1 minuto 2 secondi';
Imposta intervallistyle = 'postgres_verbose';
Seleziona intervallo '5 anni 4 mesi 3 giorni 2 ore 1 minuto 2 secondi';
Imposta intervalliStyle = 'ISO_8601';
Seleziona intervallo '5 anni 4 mesi 3 giorni 2 ore 1 minuto 2 secondi';

Operatori aritmetici a intervalli

È possibile applicare le operazioni aritmetiche (+, -, *) sui valori dell'intervallo. Le seguenti domande dimostrano questa funzione:

SELEZIONARE

Intervallo '3h 50m' + intervallo '10m';

SELEZIONARE

Intervallo '9h 50m' - intervallo '50m';

SELEZIONARE

3600 * intervallo '1 minuto';

Convertire l'intervallo in stringa

Con l'aiuto della funzione TO_CHAR (), possiamo convertire il valore di intervallo in una stringa. La struttura di to_char () è la seguente:

$ To_char (, );

Qui:

  • Il primo argomento è il valore dell'intervallo da trasformare. Può essere in qualsiasi formato a intervallo.
  • Il secondo argomento descrive il formato dell'output.

La seguente query dimostra un semplice esempio di conversione di un intervallo in formato ISO 8601 in una stringa semplice:

SELEZIONARE
To_char (
Interval 'P0005-04-03T02: 01: 02',
'HH24: MI: SS'
);

Estrazione dei dati dall'intervallo

Con l'aiuto della funzione estratto (), possiamo estrarre il contenuto di un campo specifico da un valore di intervallo. La struttura di comando di estratto () in tandem con intervallo è la seguente:

$ Extract ( DA );

Qui:

  • campo: Il campo da estrarre dall'intervallo. Ad esempio: secondi, minuti, ore, data, mese, anno, ecc.
  • intervallo: Il valore dell'intervallo.

Mettiamo in azione la funzione extract (). Nell'esempio seguente, estraiamo il campo minuto da un valore di intervallo:

SELEZIONARE

ESTRATTO (
Minuto
DA
Interval 'P0005-04-03T02: 01: 02'

Regolazione del valore di intervallo

Le funzioni Justify_days () e giustificati_hours () possono convertire gli intervalli di 30 giorni a 1 mese e 24 ore a 1 giorno, rispettivamente.

La seguente query dimostra l'uso di queste funzioni:

SELEZIONARE

Justify_days (intervallo '90 giorni '),
Justify_hours (intervallo '72 ore ');

Conclusione

Abbiamo superato la funzione di intervallo in PostgreSQL. Questa guida elabora su vari formati di intervalli supportati. Mostra anche i vari modi per implementare l'intervallo nelle domande. Infine, abbiamo anche esplorato le varie funzioni PostgreSQL che traducono/trasformano il valore dell'intervallo nei formati specificati.

È necessario interagire con PostgreSQL su una rete? Esistono vari GUI postgresql disponibili in grado di connettersi a un server remoto e gestirlo senza sforzo. Oltre alle funzioni integrate, PostgreSQL supporta anche le funzioni definite dall'utente.