🧚 Ascolta! Beekeeper Studio è una GUI per database veloce, moderna e open source Scarica
12 gennaio 2024 Di Matthew Rathbone

Nel mondo dei database SQL, PostgreSQL è noto per la sua robustezza e per il ricco set di funzionalità. Una di queste è l'ottimo supporto per i tipi date e timestamp. In questa guida vedremo come formattare le date in PostgreSQL, con tanto di esempi di codice. Questo tutorial è pensato per software engineer e per chiunque abbia una mentalità tecnica e voglia ampliare le proprie conoscenze di PostgreSQL.

Capire le date in PostgreSQL

Prima di vedere come formattare le date, è fondamentale capire come vengono rappresentate in PostgreSQL. PostgreSQL usa il tipo di dato “Date” per memorizzare la data. Ecco come creare una tabella con una colonna DATE.

CREATE TABLE orders (
  order_id serial PRIMARY KEY,
  order_date DATE NOT NULL
);

Ora inseriamo qualche dato nella tabella orders.

INSERT INTO orders (order_date) VALUES 
('2022-04-01'),
('2022-04-02'),
('2022-04-03');

PostgreSQL è intelligente e riesce a ricavare una data da una stringa se la fornisci in formato ISO 6801.

Come formattare le date in PostgreSQL: usare la funzione TO_CHAR

Il metodo principale per formattare le date in PostgreSQL è la funzione TO_CHAR. TO_CHAR ci permette di convertire i tipi data/ora in una stringa con un pattern specifico. Ecco come si usa:

TO_CHAR(date, format)

L'elenco completo delle opzioni di formattazione è disponibile nella documentazione di PostgreSQL. Ecco le opzioni di formattazione aggiornate a gennaio 2024:

Pattern Descrizione
HH ora del giorno (01–12)
HH12 ora del giorno (01–12)
HH24 ora del giorno (00–23)
MI minuto (00–59)
SS secondo (00–59)
MS millisecondo (000–999)
US microsecondo (000000–999999)
FF1 decimo di secondo (0–9)
FF2 centesimo di secondo (00–99)
FF3 millisecondo (000–999)
FF4 decimo di millisecondo (0000–9999)
FF5 centesimo di millisecondo (00000–99999)
FF6 microsecondo (000000–999999)
SSSS, SSSSS secondi dalla mezzanotte (0–86399)
AM, am, PM o pm indicatore antimeridiano/pomeridiano (senza punti)
A.M., a.m., P.M. o p.m. indicatore antimeridiano/pomeridiano (con punti)
Y,YYY anno (4 o più cifre) con virgola
YYYY anno (4 o più cifre)
YYY ultime 3 cifre dell'anno
YY ultime 2 cifre dell'anno
Y ultima cifra dell'anno
IYYY anno con numerazione settimanale ISO 8601 (4 o più cifre)
IYY ultime 3 cifre dell'anno con numerazione settimanale ISO 8601
IY ultime 2 cifre dell'anno con numerazione settimanale ISO 8601
I ultima cifra dell'anno con numerazione settimanale ISO 8601
BC, bc, AD o ad indicatore di era (senza punti)
B.C., b.c., A.D. o a.d. indicatore di era (con punti)
MONTH nome completo del mese in maiuscolo (riempito con spazi fino a 9 caratteri)
Month nome completo del mese con iniziale maiuscola (riempito con spazi fino a 9 caratteri)
month nome completo del mese in minuscolo (riempito con spazi fino a 9 caratteri)
MON nome abbreviato del mese in maiuscolo (3 caratteri in inglese, la lunghezza varia con la lingua)
Mon nome abbreviato del mese con iniziale maiuscola (3 caratteri in inglese, la lunghezza varia con la lingua)
mon nome abbreviato del mese in minuscolo (3 caratteri in inglese, la lunghezza varia con la lingua)
MM numero del mese (01–12)
DAY nome completo del giorno in maiuscolo (riempito con spazi fino a 9 caratteri)
Day nome completo del giorno con iniziale maiuscola (riempito con spazi fino a 9 caratteri)
day nome completo del giorno in minuscolo (riempito con spazi fino a 9 caratteri)
DY nome abbreviato del giorno in maiuscolo (3 caratteri in inglese, la lunghezza varia con la lingua)
Dy nome abbreviato del giorno con iniziale maiuscola (3 caratteri in inglese, la lunghezza varia con la lingua)
dy nome abbreviato del giorno in minuscolo (3 caratteri in inglese, la lunghezza varia con la lingua)
DDD giorno dell'anno (001–366)
IDDD giorno dell'anno con numerazione settimanale ISO 8601 (001–371; il giorno 1 dell'anno è il lunedì della prima settimana ISO)
DD giorno del mese (01–31)
D giorno della settimana, da domenica (1) a sabato (7)
ID giorno della settimana ISO 8601, da lunedì (1) a domenica (7)
W settimana del mese (1–5) (la prima settimana inizia il primo giorno del mese)
WW numero della settimana dell'anno (1–53) (la prima settimana inizia il primo giorno dell'anno)
IW numero della settimana dell'anno con numerazione settimanale ISO 8601 (01–53; il primo giovedì dell'anno cade nella settimana 1)
CC secolo (2 cifre) (il ventunesimo secolo inizia il 2001-01-01)
J Data giuliana (giorni interi dal 24 novembre 4714 a.C. a mezzanotte locale; vedi Sezione B.7)
Q trimestre
RM mese in numeri romani maiuscoli (I–XII; I=gennaio)
rm mese in numeri romani minuscoli (i–xii; i=gennaio)
TZ abbreviazione del fuso orario in maiuscolo (supportata solo in to_char)
tz abbreviazione del fuso orario in minuscolo (supportata solo in to_char)
TZH ore del fuso orario
TZM minuti del fuso orario
OF scostamento del fuso orario da UTC (supportato solo in to_char)

Esempi di formattazione delle date

Iniziamo convertendo la nostra data in una stringa semplice e leggibile. Ecco come fare:

SELECT order_id, TO_CHAR(order_date, 'DD Mon YYYY') as formatted_date
FROM orders;

L'output sarà simile a questo:

order_id | formatted_date
———+—————-
1 | 13 Jan 2024
2 | 12 Jan 2024
3 | 11 Jan 2024
4 | 10 Jan 2024
5 | 09 Jan 2024

Possiamo anche estrarre solo una parte della data:

SELECT order_id, TO_CHAR(order_date, 'Day') as day_of_week
FROM orders;

order_id | day_of_week
———+————-
1 | Friday
2 | Thursday
3 | Wednesday
4 | Tuesday
5 | Monday

Possiamo persino combinare più formati, se vogliamo:

SELECT order_id, TO_CHAR(order_date, 'Day, DD Mon YYYY') as detailed_date
FROM orders;

order_id | detailed_date
———+————————
1 | Friday, 13 Jan 2024
2 | Thursday, 12 Jan 2024
3 | Wednesday, 11 Jan 2024
4 | Tuesday, 10 Jan 2024
5 | Monday, 09 Jan 2024

La funzione EXTRACT

La funzione EXTRACT offre un accesso semplice a tutte le possibili parti di un valore data/ora, come anno, mese, giorno, ecc.

SELECT order_id, EXTRACT(MONTH from order_date) as order_month
FROM orders;

order_id | order_month
———+————
1 | 1
2 | 1
3 | 1
4 | 1
5 | 1

Queste sono le basi della formattazione delle date in PostgreSQL. Questi strumenti dovrebbero darti solide fondamenta per gestire i dati di tipo data. Come per tutto nella programmazione, la pratica è fondamentale: prova questi comandi in prima persona e scopri cos'altro riesci a inventarti. Buon coding!

Dovresti proprio provare a eseguire queste query in Beekeeper Studio. :-)

Beekeeper Studio è una GUI per database gratuita & open source

Il miglior strumento per query & editor SQL che abbia mai usato. Offre tutto ciò che mi serve per gestire il mio database. - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studio è veloce, intuitivo e facile da usare. Beekeeper supporta tantissimi database e funziona alla grande su Windows, Mac e Linux.

La versione Linux di Beekeeper è completa al 100%, senza tagli e senza compromessi sulle funzionalità.

Cosa dicono gli utenti di Beekeeper Studio

★★★★★
"Beekeeper Studio ha sostituito completamente il mio vecchio workflow SQL. È veloce, intuitivo e rende di nuovo piacevole lavorare con i database."
— Alex K., Database Developer
★★★★★
"Ho provato molte GUI per database, ma Beekeeper trova il perfetto equilibrio tra funzionalità e semplicità. Funziona e basta."
— Sarah M., Full Stack Engineer

Pronto a migliorare il tuo workflow SQL?

download Scarica gratis