Como realizar adição e subtração de datas em SQL

O SQL é uma habilidade fundamental para manipulação de bancos de dados, e a adição e subtração de datas são operações frequentemente necessárias. Neste artigo, focaremos nas operações de manipulação de datas em SQL, desde a sintaxe básica até exemplos práticos. Com isso, o manuseio de dados de data em seu trabalho se tornará mais suave.

Índice

Sintaxe básica para adição de datas em SQL

No SQL, usamos funções e sintaxes padrão para adicionar dias ou meses a uma data. Isso permite adicionar um período específico a uma data determinada.

Sintaxe básica da função DATEADD

Introdução ao uso da função DATEADD, comum em bancos de dados como o SQL Server, para adicionar um período específico a uma data.

-- Sintaxe básica da função DATEADD
DATEADD(unidade, valor, data_base)

Exemplo da função DATEADD

No exemplo abaixo, 10 dias são adicionados a 1º de janeiro de 2024.

SELECT DATEADD(DAY, 10, '2024-01-01') AS resultado_adicao;

O resultado será 11 de janeiro de 2024.

Adição de datas usando INTERVAL

Introdução ao método de adição de datas usando INTERVAL, comum em bancos de dados como MySQL.

-- Adição de datas usando INTERVAL
SELECT '2024-01-01' + INTERVAL 10 DAY AS resultado_adicao;

Este resultado também será 11 de janeiro de 2024.

Entender essas sintaxes básicas permitirá que você manipule datas facilmente. Em seguida, explicaremos como subtrair datas.

Sintaxe básica para subtração de datas em SQL

No SQL, também é comum precisar subtrair dias ou meses de uma data. A seguir, mostraremos como subtrair datas usando funções e sintaxes padrão.

Subtração de datas usando a função DATEADD

Em bancos de dados como o SQL Server, você pode subtrair um período específico de uma data usando a função DATEADD, especificando um valor negativo.

-- Subtração de datas usando a função DATEADD
DATEADD(unidade, valor, data_base)

Exemplo da função DATEADD

No exemplo abaixo, 10 dias são subtraídos de 10 de janeiro de 2024.

SELECT DATEADD(DAY, -10, '2024-01-10') AS resultado_subtracao;

O resultado será 31 de dezembro de 2023.

Subtração de datas usando INTERVAL

Em bancos de dados como MySQL, você pode subtrair um período específico de uma data usando INTERVAL.

-- Subtração de datas usando INTERVAL
SELECT '2024-01-10' - INTERVAL 10 DAY AS resultado_subtracao;

Este resultado também será 31 de dezembro de 2023.

Assim como na adição de datas, a subtração também pode ser feita de maneira simples. Em seguida, explicaremos como usar a função DATEADD em detalhes.

Como usar a função DATEADD

A função DATEADD é muito útil para manipular datas em bancos de dados como o SQL Server. Você pode adicionar ou subtrair dias, meses ou anos de uma data específica.

Sintaxe da função DATEADD

A sintaxe básica da função DATEADD é a seguinte:

DATEADD(unidade, valor, data_base)
  • unidade: A unidade de tempo a ser adicionada ou subtraída. Por exemplo, DAY, MONTH, YEAR, etc.
  • valor: A quantidade a ser adicionada ou subtraída. Valores positivos adicionam, e valores negativos subtraem.
  • data_base: A data de referência para a operação.

Exemplos práticos da função DATEADD

Adicionar dias

No exemplo abaixo, 30 dias são adicionados a 1º de janeiro de 2024.

SELECT DATEADD(DAY, 30, '2024-01-01') AS resultado_adicao;

O resultado será 31 de janeiro de 2024.

Adicionar meses

No exemplo a seguir, 3 meses são adicionados a 1º de janeiro de 2024.

SELECT DATEADD(MONTH, 3, '2024-01-01') AS resultado_adicao;

O resultado será 1º de abril de 2024.

Adicionar anos

No exemplo abaixo, 5 anos são adicionados a 1º de janeiro de 2024.

SELECT DATEADD(YEAR, 5, '2024-01-01') AS resultado_adicao;

O resultado será 1º de janeiro de 2029.

Exemplos avançados da função DATEADD

Obter o último dia do mês anterior

A consulta a seguir obtém o último dia do mês anterior a uma data específica.

SELECT DATEADD(MONTH, -1, DATEADD(DAY, -DAY('2024-02-15'), '2024-02-15')) AS ultimo_dia_mes_anterior;

O resultado será 31 de janeiro de 2024.

Com a função DATEADD, você pode realizar operações complexas de datas de forma simples. Em seguida, discutiremos o uso da função DATEDIFF para calcular a diferença entre datas.

Cálculo da diferença entre datas com a função DATEDIFF

A função DATEDIFF é usada em bancos de dados como o SQL Server para calcular a diferença entre duas datas. Você pode calcular a diferença em dias, meses, anos, etc.

Sintaxe da função DATEDIFF

A sintaxe básica da função DATEDIFF é a seguinte:

DATEDIFF(unidade, data_inicio, data_fim)
  • unidade: A unidade de tempo para calcular a diferença. Por exemplo, DAY, MONTH, YEAR, etc.
  • data_inicio: A data de início para o cálculo.
  • data_fim: A data de término para o cálculo.

Exemplos práticos da função DATEDIFF

Calcular a diferença em dias

No exemplo abaixo, calculamos a diferença em dias entre 1º de janeiro de 2024 e 31 de janeiro de 2024.

SELECT DATEDIFF(DAY, '2024-01-01', '2024-01-31') AS diferenca_dias;

O resultado será 30 dias.

Calcular a diferença em meses

No exemplo a seguir, calculamos a diferença em meses entre 1º de janeiro de 2024 e 1º de abril de 2024.

SELECT DATEDIFF(MONTH, '2024-01-01', '2024-04-01') AS diferenca_meses;

O resultado será 3 meses.

Calcular a diferença em anos

No exemplo abaixo, calculamos a diferença em anos entre 1º de janeiro de 2020 e 1º de janeiro de 2024.

SELECT DATEDIFF(YEAR, '2020-01-01', '2024-01-01') AS diferenca_anos;

O resultado será 4 anos.

Exemplos avançados da função DATEDIFF

Calcular a idade a partir da data de nascimento

A consulta a seguir calcula a idade atual com base em uma data de nascimento específica.

SELECT DATEDIFF(YEAR, '1990-05-15', GETDATE()) AS idade;

A função GETDATE() retorna a data atual. Neste exemplo, calcula-se a idade de uma pessoa nascida em 15 de maio de 1990.

Com a função DATEDIFF, você pode calcular facilmente a diferença entre duas datas. Em seguida, apresentaremos alguns exemplos práticos de manipulação de datas.

Exemplos práticos de manipulação de datas

No trabalho diário, a manipulação de datas é necessária em diversos cenários. A seguir, apresentaremos alguns exemplos práticos de manipulação de datas.

Exemplo 1: Obter o primeiro dia do próximo mês

Veja como obter o primeiro dia do mês seguinte a uma data específica.

SELECT DATEADD(MONTH, 1, DATEADD(DAY, 1 - DAY('2024-01-15'), '2024-01-15')) AS primeiro_dia_proximo_mes;

O resultado será 1º de fevereiro de 2024.

Exemplo 2: Obter a data de um ano atrás a partir da data atual

Veja como calcular a data de um ano atrás a partir da data atual.

SELECT DATEADD(YEAR, -1, GETDATE()) AS data_ano_atras;

A função GETDATE() retorna a data atual e, a partir dela, é subtraído um ano.

Exemplo 3: Extrair dados pertencentes a um período específico

Veja como extrair dados que pertencem a um período específico entre uma data de início e uma data de término.

SELECT *
FROM tabela_dados
WHERE coluna_data BETWEEN '2024-01-01' AND '2024-12-31';

Esta consulta extrai os dados que pertencem ao período de 1º de janeiro de 2024 a 31 de dezembro de 2024.

Exemplo 4: Calcular o tempo médio de processamento

Veja como calcular o tempo médio de processamento com base nas datas de início e término de várias operações.

SELECT AVG(DATEDIFF(DAY, data_inicio, data_fim)) AS tempo_medio_processamento
FROM tabela_processos;

Esta consulta calcula a diferença em dias entre a data de início e a data de término e, em seguida, obtém a média.

Exemplo 5: Obter o dia da semana

Veja como obter o dia da semana para uma data específica.

SELECT DATENAME(WEEKDAY, '2024-01-01') AS dia_da_semana;

O resultado retornará o dia da semana para 1º de janeiro de 2024 (por exemplo: Monday).

Com esses exemplos práticos, você pode aprofundar sua compreensão da manipulação de datas e desenvolver habilidades aplicáveis ao trabalho. Em seguida, explicaremos como calcular a data de término do mês.

Exemplo avançado: Cálculo da data de término do mês

Em muitos casos, no trabalho, é necessário calcular a data de término do mês. Aqui, mostraremos como obter a data de término do mês em SQL.

Como obter a data de término do mês

Uma forma comum de obter a data de término do mês é subtrair um dia do primeiro dia do mês seguinte.

Exemplo em SQL Server

No SQL Server, você pode obter a data de término do mês usando as funções DATEADD e EOMONTH.

-- Obter a data de término do mês usando a função EOMONTH
SELECT EOMONTH('2024-01-15') AS data_termino_mes;

O resultado será 31 de janeiro de 2024.

Exemplo em MySQL

No MySQL, você pode obter a data de término do mês usando a função LAST_DAY.

-- Obter a data de término do mês usando a função LAST_DAY
SELECT LAST_DAY('2024-01-15') AS data_termino_mes;

Este resultado também será 31 de janeiro de 2024.

Outros métodos para calcular a data de término do mês

Outra forma de calcular a data de término do mês é combinar as funções DATEADD e DAY.

Outro método de cálculo no SQL Server

No exemplo abaixo, a data de término do mês é calculada subtraindo um dia do primeiro dia do mês seguinte.

-- Calcular a data de término do mês usando as funções DATEADD e DAY
SELECT DATEADD(DAY, -DAY(DATEADD(MONTH, 1, '2024-01-15')), DATEADD(MONTH, 1, '2024-01-15')) AS data_termino_mes;

Este resultado também será 31 de janeiro de 2024.

Exemplos avançados de cálculo da data de término do mês

Cálculo da data de fechamento da fatura

Se a data de fechamento da fatura for definida para o final do mês, calcule-a da seguinte maneira:

-- Definir a data de fechamento da fatura para o final do mês
SELECT LAST_DAY('2024-01-15') AS data_fechamento;

Isso retornará a data de término do mês para o mês especificado.

Com esses métodos, o cálculo da data de término do mês em seu trabalho será facilitado. Em seguida, passaremos a exercícios práticos para aprofundar seu entendimento sobre a adição e subtração de datas.

Exercícios práticos

Aprofunde seu entendimento resolvendo exercícios práticos sobre a adição e subtração de datas. Resolva os problemas a seguir e confirme as respostas usando SQL.

Exercício 1: Adição de datas

Crie uma consulta SQL para adicionar 15 dias a uma data específica.

-- Consulta para o Exercício 1
SELECT DATEADD(DAY, 15, '2024-06-01') AS resultado_adicao;

Qual será o resultado dessa consulta?

Exercício 2: Subtração de datas

Crie uma consulta SQL para subtrair 30 dias de uma data específica.

-- Consulta para o Exercício 2
SELECT DATEADD(DAY, -30, '2024-06-01') AS resultado_subtracao;

Qual será o resultado dessa consulta?

Exercício 3: Cálculo da diferença entre datas

Crie uma consulta SQL para calcular a diferença em dias entre 1º de janeiro de 2024 e 31 de dezembro de 2024.

-- Consulta para o Exercício 3
SELECT DATEDIFF(DAY, '2024-01-01', '2024-12-31') AS diferenca_dias;

Quantos dias serão o resultado dessa consulta?

Exercício 4: Obter o primeiro dia do próximo mês

Crie uma consulta SQL para obter o primeiro dia do mês seguinte a uma data específica.

-- Consulta para o Exercício 4
SELECT DATEADD(MONTH, 1, DATEADD(DAY, 1 - DAY('2024-06-15'), '2024-06-15')) AS primeiro_dia_proximo_mes;

Qual será a data resultado dessa consulta?

Exercício 5: Obter a data de término do mês

Crie uma consulta SQL para obter a data de término do mês para 15 de julho de 2024.

-- Consulta para o Exercício 5
SELECT LAST_DAY('2024-07-15') AS data_termino_mes;

Qual será a data resultado dessa consulta?

Exercício 6: Calcular a idade

Crie uma consulta SQL para calcular a idade atual de uma pessoa nascida em 15 de maio de 1990.

-- Consulta para o Exercício 6
SELECT DATEDIFF(YEAR, '1990-05-15', GETDATE()) AS idade;

Quantos anos serão o resultado dessa consulta?

Ao resolver esses problemas, você aprofundará sua compreensão da manipulação de datas em SQL. Em seguida, resumiremos os pontos principais sobre como realizar adições e subtrações de datas em SQL.

Resumo

Sobre como realizar adições e subtrações de datas em SQL, tenha em mente os seguintes pontos principais:

Compreensão da sintaxe básica

Compreender a sintaxe básica de adição e subtração usando a função DATEADD ou INTERVAL facilita a manipulação de datas.

Uso da função DATEADD

Com a função DATEADD, você pode adicionar ou subtrair dias, meses ou anos de uma data específica de forma flexível. Especificar valores negativos permite subtrair.

Cálculo da diferença entre datas com a função DATEDIFF

Com a função DATEDIFF, você pode calcular facilmente a diferença entre duas datas. Isso é útil em diversas situações, como calcular a idade ou o tempo de processamento.

Aplicação prática

Obter o primeiro dia do mês seguinte, a data de término do mês, extrair dados de um período específico, entre outros exemplos práticos de manipulação de datas, tornam o uso no trabalho mais eficiente.

Prática com exercícios

Resolver exercícios práticos permite que você experimente diretamente o uso de SQL para manipulação de datas e aprofunde sua compreensão.

Com esses conhecimentos e habilidades, você poderá aumentar sua eficiência no manuseio de bancos de dados. Ao dominar a manipulação de datas em SQL, você expandirá suas capacidades de gerenciamento e análise de dados.

Índice