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 > 20Requê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; -- TRUERé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 < endsemi-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
- Motifs LIKE et caractères génériques
- IN et NOT IN pour les ensembles
- BETWEEN pour les intervalles
- IS NULL, IS NOT NULL et COALESCE