0Pricing
SQL Academy · Lezione

Aritmetica delle date e INTERVAL

Sommi e sottragga date con INTERVAL, calcoli durate e costruisca filtri relativi come «ultimi 7 giorni»

Aritmetica delle date e INTERVAL è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.

Riepilogo dei tipi di data e ora

I quattro tipi temporali fondamentali in PostgreSQL:

  • DATE — giorno di calendario, senza orario
  • TIME — ora del giorno
  • TIMESTAMP — data + ora, senza fuso orario
  • TIMESTAMPTZ — data + ora + fuso orario (consigliato per gli eventi)

INTERVAL: un intervallo di tempo

INTERVAL rappresenta una durata. Si può aggiungere o sottrarre a una data o a un timestamp:

SELECT NOW() + INTERVAL '1 day';
SELECT NOW() - INTERVAL '30 days';
SELECT NOW() + INTERVAL '3 months 2 weeks';
SELECT INTERVAL '1 hour' + INTERVAL '15 minutes';

Unità di INTERVAL

È possibile usare year, month, week, day, hour, minute, second (al singolare o al plurale):

SELECT INTERVAL '2 years 6 months';
SELECT INTERVAL '1 week';
SELECT INTERVAL '90 seconds';

Filtri comuni per date relative

Le query fondamentali per gli «ultimi N giorni»:

SELECT * FROM orders
WHERE created_at >= NOW() - INTERVAL '7 days';

SELECT * FROM events
WHERE created_at >= CURRENT_DATE - INTERVAL '1 month';

Aggiungere giorni a un DATE

PostgreSQL consente anche di usare date + integer per «aggiungere N giorni»:

SELECT DATE '2024-01-01' + 30;     -- 2024-01-31
SELECT DATE '2024-01-01' - 1;      -- 2023-12-31

Sottrarre due timestamp

La differenza tra due timestamp è un INTERVAL:

SELECT NOW() - '2024-01-01'::TIMESTAMP;
-- → '125 days 14:30:00'

SELECT EXTRACT(EPOCH FROM (NOW() - created_at))/3600 AS hours_ago
FROM events;

AGE: una differenza leggibile

AGE(end, start) restituisce un INTERVAL espresso in anni, mesi e giorni:

SELECT AGE(NOW(), birth_date) AS age_interval
FROM users WHERE id = 1;

SELECT EXTRACT(YEAR FROM AGE(birth_date)) AS age_in_years
FROM users;

Aggiungere mesi — attenzione

L'aggiunta di un mese segue l'aritmetica del calendario. 2024-01-31 + 1 month = 2024-02-29 (con adattamento):

SELECT DATE '2024-01-31' + INTERVAL '1 month';   -- 2024-02-29
SELECT DATE '2024-03-31' + INTERVAL '1 month';   -- 2024-04-30

CURRENT_DATE vs NOW()

Restituiscono tipi diversi: scelga quello più adatto:

SELECT CURRENT_DATE;        -- 2024-03-15 (DATE)
SELECT CURRENT_TIME;        -- 14:30:00+02 (TIMETZ)
SELECT CURRENT_TIMESTAMP;   -- 2024-03-15 14:30:00+02 (TIMESTAMPTZ)
SELECT NOW();               -- alias for CURRENT_TIMESTAMP

Costruire date a partire dai componenti

Costruisca le date a partire da colonne intere:

SELECT MAKE_DATE(year, month, day) FROM birthdays;
SELECT MAKE_TIMESTAMP(2024, 3, 15, 14, 30, 0.0);

Indici sulle espressioni di data

Un indice su created_at gestisce bene le query per intervallo. Per gli «eventi di marzo», un filtro per intervallo è più veloce di un troncamento al mese:

-- Index-friendly:
WHERE created_at >= '2024-03-01' AND created_at < '2024-04-01';

-- Less friendly (works only with expression index):
WHERE date_trunc('month', created_at) = '2024-03-01';

Riepilogo

L'aritmetica delle date in SQL è ricca e affidabile.

  • INTERVAL per le durate
  • Somma e sottrazione dirette
  • AGE per intervalli leggibili
  • Gli intervalli semiaperti sono quelli che favoriscono maggiormente gli indici

Verifica rapida

Quale espressione restituisce gli eventi degli ultimi 7 giorni?

Domande Frequenti

La lezione «Aritmetica delle date e INTERVAL» è gratuita?

Sì — il testo completo di «Aritmetica delle date e INTERVAL» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.

Cosa imparerò in «Aritmetica delle date e INTERVAL»?

Sommi e sottragga date con INTERVAL, calcoli durate e costruisca filtri relativi come «ultimi 7 giorni» Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare SQL Academy?

Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Aritmetica delle date e INTERVAL»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione SQL Academy?

Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Aritmetica delle date e INTERVAL
  2. EXTRACT, DATE_TRUNC, AGE
  3. Fusi orari: TIMESTAMP rispetto a TIMESTAMPTZ
  4. Report comuni sulle date (MTD, WoW, YoY)
← Torna a SQL Academy