0Pricing
SQL Academy · Leçon

BETWEEN pour les intervalles

Utilisez BETWEEN pour les intervalles numériques et de dates inclusifs, et sachez quand préférer les comparaisons explicites >= et < pour les intervalles semi-ouverts.

BETWEEN pour les intervalles est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 3 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.

BETWEEN est inclusif

BETWEEN a AND b correspond aux valeurs pour lesquelles x >= a AND x <= b. Les deux bornes sont incluses.

SELECT * FROM orders WHERE total BETWEEN 100 AND 500;
-- equivalent to:
SELECT * FROM orders WHERE total >= 100 AND total <= 500;

Intervalles de dates

BETWEEN fonctionne également avec les dates et les horodatages :

SELECT * FROM orders
WHERE created_at BETWEEN '2024-01-01' AND '2024-12-31';

Le piège des bornes inclusives

Avec une colonne TIMESTAMP, BETWEEN '2024-12-31' se termine à minuit le 31, et NON à la fin de la journée. Les commandes passées le 31 décembre à 14 h sont exclues.

-- WRONG — misses orders later on Dec 31:
WHERE created_at BETWEEN '2024-12-01' AND '2024-12-31';

-- RIGHT — half-open interval:
WHERE created_at >= '2024-12-01'
  AND created_at <  '2025-01-01';

Préférez les intervalles semi-ouverts pour le temps

Le modèle semi-ouvert >= start AND < next_period est sans ambiguïté, fonctionne quelle que soit la granularité et s’enchaîne naturellement pour des périodes consécutives.

WHERE created_at >= date_trunc('month', NOW())
  AND created_at <  date_trunc('month', NOW()) + INTERVAL '1 month';

NOT BETWEEN

Inverse de BETWEEN — exclut l’intervalle :

SELECT * FROM products WHERE price NOT BETWEEN 10 AND 20;
-- equivalent to: price < 10 OR price > 20

Requêtes d’intervalle et index

Un index B-tree est utile pour les requêtes d’intervalle. Dans les index composites, placez la colonne d’intervalle en dernier pour obtenir la meilleure sélectivité :

CREATE INDEX orders_user_total_idx ON orders (user_id, total);

-- Efficient: equality on user_id, range on total
SELECT * FROM orders
WHERE user_id = 42 AND total BETWEEN 100 AND 500;

Chaînes et BETWEEN

BETWEEN compare les chaînes dans l’ordre lexicographique. Soyez attentif à la casse :

SELECT * FROM users WHERE last_name BETWEEN 'A' AND 'C';
-- Includes 'Adams' and 'Bond', excludes 'C' itself only if 'C' < 'Ca...'

Types d’intervalles (PostgreSQL)

PostgreSQL propose des types d’intervalles dédiés aux intervalles semi-ouverts :

SELECT int4range(10, 20) @> 15;       -- true  (15 in [10,20))
SELECT tsrange('2024-01-01', '2025-01-01') @> NOW()::TIMESTAMP;

Valider les intervalles avec CHECK

Assurez-vous que la valeur de début <= la valeur de fin lors de l’insertion :

CREATE TABLE bookings (
  id BIGSERIAL PRIMARY KEY,
  start_at TIMESTAMPTZ NOT NULL,
  end_at   TIMESTAMPTZ NOT NULL,
  CHECK (start_at < end_at)
);

Regroupement numérique par intervalles

Combinez BETWEEN avec CASE pour créer des catégories :

SELECT id, total,
  CASE
    WHEN total BETWEEN 0 AND 99    THEN 'small'
    WHEN total BETWEEN 100 AND 999 THEN 'medium'
    ELSE 'large'
  END AS bucket
FROM orders;

BETWEEN SYMMETRIC

Extension de la norme SQL qui ne dépend pas de la borne la plus petite :

SELECT 5 BETWEEN SYMMETRIC 10 AND 1;   -- TRUE

Récapitulatif

BETWEEN est une notation abrégée pratique pour les intervalles inclusifs.

  • Méfiez-vous des bornes des horodatages — préférez >= start AND < end semi-ouvert
  • Les index composites accélèrent les requêtes d’intervalle
  • Les contraintes CHECK garantissent la validité des intervalles

Vérification rapide

Les deux bornes de BETWEEN a AND b sont-elles incluses en SQL standard ?

Questions Fréquemment Posées

La leçon « BETWEEN pour les intervalles » est-elle gratuite ?

Oui — le texte complet de « BETWEEN pour les intervalles » 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 « BETWEEN pour les intervalles » ?

Utilisez BETWEEN pour les intervalles numériques et de dates inclusifs, et sachez quand préférer les comparaisons explicites >= et < pour les intervalles semi-ouverts. 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 3 sur 4.

Combien de temps prend la leçon « BETWEEN pour les intervalles » ?

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. Motifs LIKE et caractères génériques
  2. IN et NOT IN pour les ensembles
  3. BETWEEN pour les intervalles
  4. IS NULL, IS NOT NULL et COALESCE
← Retour à SQL Academy