Alura > Cursos de Data Science > Cursos de SQL e Banco de Dados > Conteúdos de SQL e Banco de Dados > Primeiras aulas do curso Praticando SQL: trabalhando com funções de Data

Praticando SQL: trabalhando com funções de Data

Funções de Data - Funções de Data

Olá! Te desejo boas-vindas ao curso SQL: Funções de Data! Meu nome é Marcelo Cruz, sou instrutor na Escola de Dados e estarei com vocês ao longo deste curso

Audiodescrição: Marcelo se descreve como um homem de pele clara, com cabelos cacheados castanho-escuro, e barba, bigode e cavanhaque também castanho-escuro. Veste uma camisa preta e, ao fundo, há uma parede branca com iluminação em tons de verde e azul.

Neste vídeo, vamos explorar as principais funções de data no SQL.

Se surgir alguma dúvida, sinta-se à vontade para acessar o fórum ou participar da comunidade da Alura no Discord. Lá, você poderá interagir com outros alunos e contar com o apoio dos nossos monitores.

Praticando SQL: Funções de Data

Agora, vamos ao que interessa!

Aqui está a lista das funções de data que iremos estudar:

Além dessas funções, também veremos o uso do comando CASE WHEN em conjunto com algumas delas. Vamos começar?

Função NOW

Para começar, vamos conhecer a função de data NOW, que retorna a data e a hora atuais, como no exemplo a seguir:

SELECT NOW() AS data_atual;

No comando SQL acima, utilizamos o SELECT para chamar a função NOW, em vez de selecionar um campo de uma tabela. O resultado dessa consulta será um campo chamado data_atual (nome que atribuímos a ele), contendo a data e a hora no formato ano, mês e dia. No exemplo, a data retornada é 2025-01-07 12:34:56, ou seja, 07 de janeiro de 2025, com o horário exibido no formato padrão: hora, minuto e segundo.

Função CURDATE

O próximo comando trará um resultado semelhante ao da função NOW, mas retornará apenas a data. Utilizaremos o SELECT para chamar a função CURDATE e salvaremos o resultado novamente como data_atual.

SELECT CURDATE() AS data_atual;

Dessa vez, o valor retornado será 2025-01-07, ou seja, 07 de janeiro de 2025, sem incluir a informação de horário, mantendo o formato ano, mês e dia que já vimos anteriormente.

Função DATE

A próxima função que vamos explorar é a DATE, que extrai apenas a data de um valor do tipo DATETIME (que inclui tanto data quanto hora). No nosso comando, utilizamos SELECT e chamamos a função DATE, passando como argumento um objeto do tipo DATETIME. A função extrai apenas a data desse valor, e o resultado final é armazenado no campo somente_data.

SELECT DATE(NOW()) AS somente_data;

No exemplo, o resultado exibido é 2025-01-07, ou seja, 07 de janeiro de 2025, extraído de um objeto que originalmente continha um valor DATETIME.

Função STRFTIME

Em seguida, vamos conhecer a função STRFTIME, com a qual podemos formatar uma data em um padrão diferente. Tomemos o seguinte código como exemplo:

SELECT STRFTIME('%d-%m-%Y', 'now') AS data_formatada;

No comando SQL acima, utilizamos SELECT e chamamos a função STRFTIME, que recebe dois parâmetros. O primeiro define o formato desejado para a data. Até agora, utilizamos o padrão ano, mês e dia, mas queremos um formato mais familiar no Brasil: dia, mês e ano. Para isso, no primeiro parâmetro, entre aspas simples, passamos %d-%m-%Y, onde %d representa o dia, %m representa o mês e %Y representa o ano.

O segundo parâmetro da função será now, que retorna a data e hora atuais. O resultado dessa operação será salvo no campo data_formatada, contendo a data no formato 07-01-2025.

Função DATEDIFF

A próxima função que vamos explorar é DATEDIFF, que calcula a diferença entre duas datas fornecidas. Tomemos o seguinte código como exemplo:

SELECT DATEDIFF('2025-01-07', '2025-01-01') AS dias_diferenca;)

No nosso comando SQL, utilizamos SELECT para chamar DATEDIFF, passando duas datas como argumentos. A primeira será a data inicial (2025-01-07) e a segunda será 2025-01-01. O objetivo é calcular a diferença entre elas e armazenar o resultado no campo dias_diferenca.

O resultado final será 6, que corresponde exatamente ao intervalo entre as duas datas informadas.

Função EXTRACT

O próximo comando é a função EXTRACT, que permite extrair partes específicas de uma data, como ano, mês ou dia. Usaremos o seguinte código:

SELECT EXTRACT(YEAR FROM NOW()) AS ano_atual;

No nosso comando SQL, utilizamos SELECT e chamamos a função EXTRACT, especificando qual parte da data queremos obter. Neste exemplo, extraímos o ano (YEAR) da função NOW. Vale lembrar que NOW retorna tanto a data quanto a hora, mas, com EXTRACT, conseguimos isolar apenas o ano.

O resultado dessa operação será salvo no campo ano_atual, e o valor retornado será 2025. Assim, confirmamos que a função extraiu corretamente apenas essa parte da data.

Função DATE_ADD

A próxima função é DATE_ADD, que permite adicionar ou subtrair um intervalo de tempo a uma data. Para este caso, usaremos o seguinte código:

SELECT DATE_ADD(CURDATE(), INTERVAL 7 DAY) AS data_futura;

No nosso comando SQL, utilizamos SELECT e chamamos DATE_ADD(). O primeiro parâmetro passado é a data atual, obtida com a função CURDATE(). O segundo parâmetro define o intervalo de tempo que queremos adicionar. Nesse caso, adicionamos 7 dias, utilizando a sintaxe INTERVAL 7 DAY.

O resultado final será armazenado no campo data_futura. A data atual no exemplo é 07 de janeiro de 2025, então, ao somarmos 7 dias, a data retornada será 2025-21-14, ou seja, 14 de janeiro de 2025.

Comando CASE WHEN

Por fim, vamos conhecer o comando CASE WHEN, que permite criar condições dentro de uma consulta, retornando valores diferentes com base em critérios específicos. Para este caso, usaremos o seguinte código:

SELECT nome, data_nascimento,
    CASE
        WHEN DATEDIFF(CURDATE(), data_nascimento) / 365 >= 18 THEN 'Adulto'
        ELSE 'Menor'
    END AS categoria
FROM pessoas;

No nosso comando SQL, selecionamos o nome e a data de nascimento da tabela pessoas. No entanto, criamos também um novo campo que não existe originalmente na tabela.

A lógica funciona da seguinte forma:

  1. Utilizamos a função DATEDIFF para calcular a diferença entre duas datas.
    • A primeira data é a atual, obtida com CURDATE.
    • A segunda data é a data de nascimento (data_nascimento) da pessoa.
  2. Dividimos o resultado de DATEDIFF por 365, que são os dias do ano, para obter a idade aproximada em anos.
  3. Em seguida, aplicamos a condição:
    • Se o valor calculado for maior ou igual a 18, classificamos a pessoa como Adulto.
    • Caso contrário, classificamos como Menor.
  4. Encerramos a estrutura com END e salvamos esse resultado no campo categoria.

Assim, ao executar o comando, o SQL retorna uma tabela que inclui o nome, a data de nascimento e a nova categoria de idade, identificando cada pessoa como Adulto ou Menor com base na diferença entre a data atual e a data de nascimento.

Primeiro, analisamos a tabela original, que contém os campos ID, NOME e DATA_NASCIMENTO para três pessoas: Ana, João e Maria.

IDNOMEDATA_NASCIMENTO
1Ana2000-05-15
2João2010-07-20
3Maria1995-03-10

Ana nasceu em 15 de fevereiro de 2000. Como a data atual indica que ela já completou 18 anos, será categorizada como Adulta. João nasceu em 20 de setembro de 2010. Como ainda não atingiu a maioridade, será classificado como Menor. Maria nasceu em 10 de fevereiro de 1995. Assim como Ana, já é maior de idade e será categorizada como Adulta.

Ao executar o código, obtemos o resultado esperado:

NOMEDATA_NASCIMENTOCATEGORIA
Ana2000-05-15Adulto
João2010-07-20Menor
Maria1995-03-10Adulto

Dessa forma, conseguimos aplicar a lógica do CASE WHEN, criando o novo campo categoria, que classifica automaticamente cada pessoa com base na idade.

Recapitulando

Ao longo deste curso, exploramos diversas funções de data no SQL, incluindo:

Agora é hora de praticar! Logo após este vídeo, disponibilizamos diversos exercícios para que vocês possam reforçar o aprendizado.

Bons estudos e até logo!

Sobre o curso Praticando SQL: trabalhando com funções de Data

O curso Praticando SQL: trabalhando com funções de Data possui 10 minutos de vídeos, em um total de 13 atividades. Gostou? Conheça nossos outros cursos de SQL e Banco de Dados em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda SQL e Banco de Dados acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas