0Pricing
SQL Academy · Leçon

Arithmétique des dates et INTERVAL

Ajoutez et soustrayez des dates avec INTERVAL, calculez des durées et créez des filtres relatifs comme « les 7 derniers jours ».

Arithmétique des dates et INTERVAL est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.

Récapitulatif des types de date et d'heure

Quatre types temporels fondamentaux dans PostgreSQL :

  • DATE — jour calendaire, sans heure
  • TIME — heure de la journée
  • TIMESTAMP — date et heure, sans fuseau
  • TIMESTAMPTZ — date, heure et fuseau (recommandé pour les événements)

INTERVAL : une durée

INTERVAL est une durée. Vous l'ajoutez à une date ou à un horodatage, ou vous l'en soustrayez :

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és d'INTERVAL

Vous pouvez utiliser year, month, week, day, hour, minute, second (au singulier ou au pluriel) :

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

Filtres courants sur les dates relatives

Les requêtes incontournables sur les « N derniers jours » :

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

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

Ajouter des jours à une DATE

PostgreSQL autorise également date + integer pour « ajouter N jours » :

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

Soustraire deux horodatages

La différence entre deux horodatages est 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 : différence lisible

AGE(end, start) renvoie un INTERVAL en années, mois et jours :

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;

Ajouter des mois — attention

Ajouter un mois relève de l'arithmétique calendaire. 2024-01-31 + 1 month = 2024-02-29 (date ramenée au dernier jour du mois) :

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

CURRENT_DATE par rapport à NOW()

Les types renvoyés sont différents — choisissez celui qui convient :

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

Construire des dates à partir de leurs éléments

Construisez des dates à partir de colonnes entières :

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

Index sur des expressions de date

Un index sur created_at gère efficacement les requêtes par intervalle. Pour les « événements de mars », un filtre par intervalle est plus rapide qu'une troncature au mois :

-- 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';

Récapitulatif

L'arithmétique des dates en SQL est riche et fiable.

  • INTERVAL pour les durées
  • Ajouter ou soustraire directement
  • AGE pour les durées lisibles
  • Les intervalles semi-ouverts sont les plus favorables aux index

Vérification rapide

Quelle expression renvoie les événements des 7 derniers jours ?

Questions Fréquemment Posées

La leçon « Arithmétique des dates et INTERVAL » est-elle gratuite ?

Oui — le texte complet de « Arithmétique des dates et INTERVAL » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Arithmétique des dates et INTERVAL » ?

Ajoutez et soustrayez des dates avec INTERVAL, calculez des durées et créez des filtres relatifs comme « les 7 derniers jours ». Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer SQL Academy ?

Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Arithmétique des dates et INTERVAL » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?

Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Arithmétique des dates et INTERVAL
  2. EXTRACT, DATE_TRUNC, AGE
  3. Fuseaux horaires : TIMESTAMP contre TIMESTAMPTZ
  4. Rapports courants sur les dates (MTD, WoW, YoY)
← Retour à SQL Academy