BETWEEN para intervalos
Use BETWEEN para intervalos numéricos e de datas inclusivos e saiba quando preferir comparações explícitas com >= e < para intervalos semiabertos.
BETWEEN para intervalos é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.
BETWEEN é inclusivo
BETWEEN a AND b corresponde a valores em que x >= a AND x <= b. Os dois limites são inclusivos.
SELECT * FROM orders WHERE total BETWEEN 100 AND 500;
-- equivalent to:
SELECT * FROM orders WHERE total >= 100 AND total <= 500;Intervalos de datas
BETWEEN também funciona com datas e registros de data e hora:
SELECT * FROM orders
WHERE created_at BETWEEN '2024-01-01' AND '2024-12-31';A armadilha dos limites inclusivos
Ao usar uma coluna TIMESTAMP, BETWEEN '2024-12-31' termina à meia-noite do dia 31, e NÃO no fim do dia. Pedidos feitos às 14:00 de 31 de dezembro são excluídos.
-- 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';Prefira intervalos semiabertos para tempo
O padrão semiaberto >= start AND < next_period é inequívoco, funciona em qualquer granularidade e se encadeia naturalmente para períodos consecutivos.
WHERE created_at >= date_trunc('month', NOW())
AND created_at < date_trunc('month', NOW()) + INTERVAL '1 month';NOT BETWEEN
Inverso de BETWEEN — exclui o intervalo:
SELECT * FROM products WHERE price NOT BETWEEN 10 AND 20;
-- equivalent to: price < 10 OR price > 20Consultas de intervalo e índices
Um índice B-tree ajuda com consultas de intervalo. Em índices compostos, use a coluna do intervalo por último para obter a melhor seletividade:
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;Strings e BETWEEN
BETWEEN compara strings em ordem lexicográfica. Tenha cuidado com maiúsculas e minúsculas:
SELECT * FROM users WHERE last_name BETWEEN 'A' AND 'C';
-- Includes 'Adams' and 'Bond', excludes 'C' itself only if 'C' < 'Ca...'Tipos de intervalo (PostgreSQL)
O PostgreSQL tem tipos de intervalo específicos para intervalos semiabertos:
SELECT int4range(10, 20) @> 15; -- true (15 in [10,20))
SELECT tsrange('2024-01-01', '2025-01-01') @> NOW()::TIMESTAMP;Validando intervalos com CHECK
Certifique-se de que start <= end no momento da inserção:
CREATE TABLE bookings (
id BIGSERIAL PRIMARY KEY,
start_at TIMESTAMPTZ NOT NULL,
end_at TIMESTAMPTZ NOT NULL,
CHECK (start_at < end_at)
);Agrupamento numérico
Combine BETWEEN com CASE para criar grupos:
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
Extensão do padrão SQL que não depende de qual lado é menor:
SELECT 5 BETWEEN SYMMETRIC 10 AND 1; -- TRUERecapitulação
BETWEEN é uma forma abreviada e conveniente de representar intervalos inclusivos.
- Tenha cuidado com os limites de registros de data e hora — prefira
>= start AND < endsemiaberto - Índices compostos aceleram consultas de intervalo
- Restrições CHECK garantem intervalos válidos
Verificação rápida
Os dois limites de BETWEEN a AND b são inclusivos no SQL padrão?
Perguntas Frequentes
A aula “BETWEEN para intervalos” é grátis?
Sim — o texto completo de “BETWEEN para intervalos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.
O que vou aprender em “BETWEEN para intervalos”?
Use BETWEEN para intervalos numéricos e de datas inclusivos e saiba quando preferir comparações explícitas com >= e < para intervalos semiabertos. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar SQL Academy?
Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “BETWEEN para intervalos”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de SQL Academy?
Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Padrões e caracteres curinga com LIKE
- IN e NOT IN para conjuntos
- BETWEEN para intervalos
- IS NULL, IS NOT NULL e COALESCE