0Pricing
SQL Academy · Aula

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 > 20

Consultas 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;   -- TRUE

Recapitulaçã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 < end semiaberto
  • Í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

  1. Padrões e caracteres curinga com LIKE
  2. IN e NOT IN para conjuntos
  3. BETWEEN para intervalos
  4. IS NULL, IS NOT NULL e COALESCE
← Voltar para SQL Academy