CodeGym /Corsi /SQL SELF /Tipi di dati per lavorare con data e ora: DATE

Tipi di dati per lavorare con data e ora: DATE, TIME, TIMESTAMP

SQL SELF
Livello 15 , Lezione 4
Disponibile

Quante volte hai visto applicazioni che lavorano con date e orari? Ordini online, orari, cronologia delle modifiche nel database — tutto dipende dal salvataggio corretto del tempo. PostgreSQL ti dà strumenti potenti per gestire questi dati, e ovviamente le tabelle con il tempo non sono tabelle spaventose con orologi e minuti, ma una struttura chiara che ti permette di analizzare e ordinare gli eventi.

I tipi per data e ora ti permettono di:

  • Salvare solo la data DATE, solo l'orario TIME oppure entrambi insieme TIMESTAMP.
  • Fare operazioni come aggiungere giorni, calcolare la differenza tra date e filtrare i record secondo criteri temporali.
  • Lavorare con i fusi orari (ma questa è roba per le prossime lezioni).

Tipi di dati: DATE, TIME, TIMESTAMP

Tipo di dato DATE

Il tipo DATE serve per salvare solo la data, senza l'orario. Registra anno, mese e giorno. Questo tipo è utile quando:

  • Devi salvare la data di nascita di un utente.
  • La data dell'evento è importante, ma l'orario non conta.

Esempio di formato: YYYY-MM-DD (anno-mese-giorno).

Esempio:

id name - VARCHAR(100) event_date - DATE
1 SQL Workshop 2025-06-15
2 Python 2025-06-17
3 Java Courses 2025-06-25

Tipo di dato TIME

Il tipo TIME si usa per salvare solo l'orario. È utile quando:

  • Devi salvare un orario, tipo l'inizio della giornata lavorativa.
  • L'orario conta, ma la data no.

Esempio di formato: HH:MI:SS (ore:minuti:secondi).

Esempio:

id task_name - VARCHAR(100) start_time - TIME
1 Team Meeting 09:00:00
2 Code Review 11:30:00
3 Client Call 15:00:00

Tipo di dato TIMESTAMP

TIMESTAMP è una combinazione di data e ora. È utile quando:

  • Devi registrare un momento preciso, tipo quando un utente fa il login.
  • Serve un timestamp per tracciare le modifiche (logging).

Esempio di formato: YYYY-MM-DD HH:MI:SS (anno-mese-giorno ore:minuti:secondi).

Esempio:

id action - VARCHAR(100) login_time - TIMESTAMP
1 User Login 2023-10-15 14:30:00
2 File Uploaded 2023-10-15 15:10:00
3 User Logout 2023-10-15 16:45:00

Operazioni con data e ora

Ora che sappiamo quali tipi esistono, vediamo come usarli. PostgreSQL offre un sacco di funzioni built-in per fare operazioni con date e orari.

Estrazione di parti di data e ora

Se hai un timestamp (TIMESTAMP) e vuoi tirare fuori solo l'anno, il mese, il giorno o l'ora, usa la funzione EXTRACT.

Esempio:

SELECT EXTRACT(YEAR FROM TIMESTAMP '2025-06-15 14:30:00') AS anno;
-- Risultato: 2025

SELECT EXTRACT(MONTH FROM TIMESTAMP '2025-06-15 14:30:00') AS mese;
-- Risultato: 06

SELECT EXTRACT(DAY FROM TIMESTAMP '2025-06-15 14:30:00') AS giorno;
-- Risultato: 15

Aggiunta e sottrazione di intervalli di tempo

Vuoi sapere che giorno sarà tra una settimana? O che giorno era ieri? Usa le operazioni con gli intervalli.

Esempio:

-- Aggiungi 7 giorni alla data corrente
SELECT CURRENT_DATE + INTERVAL '7 days' AS prossima_settimana;

-- Sottrai 1 mese
SELECT CURRENT_DATE - INTERVAL '1 month' AS mese_scorso;

Confronto tra date

Come fai a sapere se un evento è già successo? Più facile che trovare un bug nel codice — basta confrontare i valori.

Esempio:

SELECT event_date
FROM events
WHERE event_date < CURRENT_DATE;
-- Seleziona tutti gli eventi nel passato

Scoprirai di più sulle funzioni per lavorare con data e ora nelle prossime lezioni. Per ora basta ricordare che questi tipi esistono — è già abbastanza.

Problemi di fusi orari e standard del tempo

Anche se in questa lezione non entriamo nei dettagli sui fusi orari, è importante dire che PostgreSQL supporta il tipo TIMESTAMPTZ (timestamp con fuso orario). Per esempio, 2023-10-15 14:30:00+02 indica che quell'orario è nel fuso UTC+2.

Ne parleremo sicuramente nel nostro corso, ma più avanti :P

Esempio

Ora è il momento di mettere in pratica quello che abbiamo imparato. Creiamo una tabella che salva l'orario delle lezioni degli studenti.

id subject_name class_date - DATE start_time - TIME end_time - TIME created_at - TIMESTAMP
1 Mathematics 2023-10-16 09:00:00 10:30:00 2023-10-12 14:00:00
2 Physics 2023-10-16 11:00:00 12:30:00 2023-10-12 14:00:00
3 Chemistry 2023-10-17 09:00:00 10:30:00 2023-10-12 14:01:00
4 Literature 2023-10-17 11:00:00 12:30:00 2023-10-12 14:01:00
5 Computer Science 2023-10-18 10:00:00 11:30:00 2023-10-12 14:02:00

Tra qualche lezione creerai tabelle così nel database usando query SQL. Per ora, goditi la vista :)

Errori tipici

Formato di data e ora: quando inserisci dati è importante rispettare il formato giusto: YYYY-MM-DD per le date e HH:MI:SS per l'orario. PostgreSQL potrebbe non capire se provi a inserire una data come "15/10/2023".

Mismatch di tipi di dati: se provi a scrivere un valore testuale in un campo di tipo DATE otterrai un errore.

Errori con intervalli di tempo: se aggiungi, per esempio, 30 giorni a febbraio, PostgreSQL lo gestirà correttamente, ma la data potrebbe finire già a marzo.

Ora conosci i tipi di dati per lavorare con data e ora in PostgreSQL. Nei progetti veri ti aiuterà a gestire orari, loggare eventi o tracciare cose importanti nel sistema!

1
Sondaggio/quiz
Tipi di dati numerici, livello 15, lezione 4
Non disponibile
Tipi di dati numerici
Tipi di dati numerici
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION