0Pricing
SQL Academy · Aula

Aritmética de datas e INTERVAL

Some e subtraia datas com INTERVAL, calcule durações e crie filtros de datas relativos, como “últimos 7 dias”.

Aritmética de datas e INTERVAL é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 1 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.

Revisão dos tipos de data e hora

Quatro tipos temporais fundamentais em PostgreSQL:

  • DATE — dia do calendário, sem hora
  • TIME — hora do dia
  • TIMESTAMP — data + hora, sem fuso
  • TIMESTAMPTZ — data + hora + fuso (recomendado para eventos)

INTERVAL: um período de tempo

INTERVAL é uma duração. Você pode adicioná-lo ou subtraí-lo de uma data/marca de tempo:

SELECT NOW() + INTERVAL '1 day';
SELECT NOW() - INTERVAL '30 days';
SELECT NOW() + INTERVAL '3 months 2 weeks';
SELECT INTERVAL '1 hour' + INTERVAL '15 minutes';

Unidades de INTERVAL

Você pode usar year, month, week, day, hour, minute, second (no singular ou plural):

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

Filtros comuns para datas relativas

As consultas essenciais de «últimos N dias»:

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

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

Adicionando dias a um DATE

O PostgreSQL também permite date + integer para «adicionar N dias»:

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

Subtraindo duas marcas de tempo

A diferença entre duas marcas de tempo é um 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: diferença legível para humanos

AGE(end, start) retorna um INTERVAL de anos, meses e dias:

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;

Adicionando meses — atenção

Adicionar um mês é uma operação aritmética de calendário. 2024-01-31 + 1 month = 2024-02-29 (ajustado):

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

CURRENT_DATE versus NOW()

Os tipos retornados são diferentes — escolha o que melhor se adapta:

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

Construindo datas a partir de partes

Construa datas a partir de colunas inteiras:

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

Índices em expressões de data

Um índice em created_at lida bem com consultas por intervalo. Para «eventos em março», um filtro por intervalo é mais rápido do que o truncamento por mês:

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

Revisão

A aritmética de datas em SQL é rica e confiável.

  • INTERVAL para durações
  • Adição/subtração direta
  • AGE para períodos legíveis para humanos
  • Intervalos semiabertos são os mais favoráveis aos índices

Verificação rápida

Qual expressão retorna os eventos dos últimos 7 dias?

Perguntas Frequentes

A aula “Aritmética de datas e INTERVAL” é grátis?

Sim — o texto completo de “Aritmética de datas e INTERVAL” é 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 “Aritmética de datas e INTERVAL”?

Some e subtraia datas com INTERVAL, calcule durações e crie filtros de datas relativos, como “últimos 7 dias”. 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 1 de 4.

Quanto tempo leva a aula “Aritmética de datas e INTERVAL”?

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. Aritmética de datas e INTERVAL
  2. EXTRACT, DATE_TRUNC, AGE
  3. Fusos horários: TIMESTAMP em comparação com TIMESTAMPTZ
  4. Relatórios comuns de datas (MTD, WoW, YoY)
← Voltar para SQL Academy