Introduzione
La possibilità di memorizzare i valori di data all'interno del tuo database ti consente di aggiungere un elemento temporale alle tue query e all'analisi dei tuoi dati. È importante sapere come lavorare con i tipi di data nel rispettivo database in modo da poter essere precisi nei rapporti che si tratti di informazioni sugli ordini, età delle persone o qualsiasi altro caso d'uso.
In questa guida parleremo della memorizzazione di DATE
tipi in PostgreSQL e i vari modi in cui puoi lavorarci.
PostgreSQL DATE
tipo di dati
Il DATE
digitare PostgreSQL può memorizzare una data senza un valore di tempo associato:
DATE
PostgreSQL utilizza 4 byte per memorizzare un valore di data. L'intervallo di valori per i valori di data in PostgreSQL è compreso tra 4713 BC e 5874897 AD.
Quando si memorizza un valore di data, PostgreSQL utilizza il yyyy-mm-dd
formato ad es. 1994-10-27. Questo formato viene utilizzato anche in PostgreSQL per l'inserimento di dati.
In PostgreSQL, è possibile impostare un valore di data predefinito per la data corrente. Questo può essere fatto durante la creazione della tabella utilizzando il DEFAULT
e CURRENT_DATE
parole chiave. Il last_checkout
la colonna della nostra tabella di checkout della libreria accetta la data corrente per impostazione predefinita:
CREATE TABLE checkouts ( author_id serial PRIMARY KEY, author_name VARCHAR (255) NOT NULL, book_title VARCHAR (255) NOT NULL, published_date DATE NOT NULL, last_checkout DATE NOT NULL DEFAULT CURRENT_DATE);
Seguendo questa struttura di tabella, possiamo inserire i dati con il INSERT INTO
dichiarazione:
INSERT INTO checkouts (author_name, book_title, published_date)VALUES('James Joyce', 'Ulysses', '1922-02-02');
Quindi durante la query sui checkouts
tabella, otteniamo quanto segue:
SELECT * FROM checkouts; author_id | author_name | book_title | published_date | last_checkout -----------+-------------+------------+----------------+--------------- 1 | James Joyce | Ulysses | 1922-02-02 | 2021-09-27(1 row)
PostgreSQL DATE
funzioni
Conoscendo i dettagli della DATE
digita PostgreSQL, sarai quindi in grado di utilizzare le funzioni che lavorano con le informazioni che memorizzi. Esamineremo alcune funzioni comuni basate sulla tabella introdotta nella sezione precedente.
Ottieni la data corrente
In PostgreSQL, puoi ottenere la data e l'ora correnti usando il built-in NOW()
funzione. La seguente dichiarazione restituirà sia il giorno che l'ora:
SELECT NOW(); now ------------------------------- 2021-09-27 15:22:53.679985+02(1 row)
Se l'ora non è di interesse, puoi anche specificare di restituire la data solo con i due due punti ::
per trasmettere un DATETIME
valore al DATE
valore:
SELECT NOW()::date; now ------------ 2021-09-27(1 row)
Usando CURRENT_DATE
è un altro modo per ottenere la data corrente come mostrato di seguito:
SELECT CURRENT_DATE; current_date -------------- 2021-09-27(1 row)
Tutte e tre queste opzioni ti restituiranno la data nel yyyy-mm-dd
formato. All'interno di PostgreSQL, puoi modificare il formato di questo output, se lo desideri.
Emetti un valore di data in un formato specifico
Per generare un valore di data in un formato specifico, usi TO_CHAR()
funzione. Questa funzione accetta due parametri:
- il valore che vuoi formattare
- il modello che definisce il formato di output
SELECT TO_CHAR(NOW()::date, 'dd/mm/yyyy'); to_char ------------ 27/09/2021(1 row)
Puoi anche visualizzare la data in un formato come Sep 27, 2021
:
SELECT TO_CHAR(NOW():: DATE, 'Mon dd, yyyy'); to_char -------------- Sep 27, 2021(1 row)
A seconda dei requisiti di un sistema, potrebbe essere necessaria una data formattata in un modo specifico. Questo è uno scenario in cui è utile poter specificare l'output in PostgreSQL.
Ottieni l'intervallo tra due date
PostgreSQL ti permette di ottenere l'intervallo tra due date usando il -
operatore. L'utilizzo di questo operatore ti consente di calcolare cose come la permanenza in carica di un dipendente o il tempo trascorso dalla pubblicazione di un libro.
Nel nostro esempio vogliamo trovare quanti giorni sono trascorsi dall'Ulisse di Joyce è stato pubblicato sottraendo la data corrente dalla published_date
:
SELECT author_name, book_title, now()::date - published_date as diffFROM checkouts;
Risultato:
author_name | book_title | diff -------------+------------+---------------------------- James Joyce | Ulysses | 36397 days (1 row)
Calcolo dell'età utilizzando i valori della data
Possiamo continuare con lo stesso esempio per calcolare l'età alla data corrente in anni, mesi e giorni usando AGE()
funzione. La seguente istruzione usa AGE()
funzione per calcolare l'età di una pubblicazione dalla nostra libreria checkouts
tabelle:
SELECT author_name, book_title, AGE(published_date)FROM checkouts;
Con questa funzione possiamo calcolare quanti anni ha un libro in inventario:
author_name | book_title | age -------------+------------+------------------------- James Joyce | Ulysses | 99 years 7 mons 25 days(1 row)
È importante notare che se si passa una singola data in AGE()
funzione, quindi utilizzerà automaticamente la data corrente per sottrarre e calcolare. Puoi anche passare due date nella funzione per calcolare l'età come:
SELECT author_name, book_title, AGE('2000-01-01',published_date),FROM checkouts;
Risultato:
author_name | book_title | age -------------+------------+-------------------------- James Joyce | Ulysses | 77 years 10 mons 27 days(1 row)
Estrazione di anno, trimestre, mese, settimana o giorno da un valore di data
L'ultima funzione che tratteremo è EXTRACT()
funzione in PostgreSQL che ti consente di separare i componenti della data come anno, trimestre, mese e giorno.
La seguente dichiarazione estrae l'anno, il mese e il giorno dalla data di pubblicazione di Ulisse :
SELECT author_name, book_title, EXTRACT(YEAR FROM published_date) AS YEAR, EXTRACT(MONTH FROM published_date) AS MONTH, EXTRACT(DAY FROM published_date) AS DAY FROM checkouts;
I risultati saranno simili ai seguenti:
author_name | book_title | year | month | day -------------+------------+------+-------+----- James Joyce | Ulysses | 1922 | 2 | 2(1 row)
Questa è una funzione utile da tenere presente quando potresti aver bisogno solo di una parte di un valore di data per un calcolo con i tuoi dati, ad esempio.
Conclusione
In questa guida, abbiamo trattato le basi di ciò che puoi fare con DATE
tipo di dati in PostgreSQL. È importante sapere come funzionano i dati sulla data all'interno del database. Avere una conoscenza dei modi in cui è possibile accedervi e operare su di esso consente di eseguire calcoli sull'età, eseguire estrazioni nelle query e anche configurare l'output, se necessario, per soddisfare i requisiti di un altro sistema.