Menu
Coddy logo textTech

Handling Dates Part 3

Parte da seção Fundamentos do Journey de SQL da Coddy — lição 33 de 72.

O SQL fornece várias funções úteis para manipular e formatar datas. Aqui estão algumas funções de data comuns:

  1. DATE() - Converte uma string em uma data
  2. STRFTIME() - Formata datas de acordo com parâmetros especificados
  3. DATE('now') - Obtém a data atual:

Por exemplo, converter string para data:

SELECT DATE('2023-05-15 13:45:00')
-- Returns: 2023-05-15

SELECT DATE('now')
-- Returns current date

Por exemplo, extrair ano, mês e dia da data:

-- Get year
SELECT STRFTIME('%Y', '2023-05-15')
-- Returns: 2023

-- Get month
SELECT STRFTIME('%m', '2023-05-15')
-- Returns: 05

-- Get day
SELECT STRFTIME('%d', '2023-05-15')
-- Returns: 15

-- Show combination of year and day (any separator can be used)
SELECT STRFTIME('%Y:%d', '2023-05-15')
-- Returns: 2023:15

-- Use a dash separator instead
SELECT STRFTIME('%d-%m-%Y', '2023-05-15')
-- Returns: 15-05-2023

-- Get day of week
SELECT STRFTIME('%w', '2023-05-15')
-- Returns: 1 (Monday; Sunday is 0)

Especificadores de formato comuns:

  • %Y: Ano (4 dígitos)
  • %m: Mês (01-12)
  • %d: Dia do mês (01-31)
  • %w: Dia da semana (0-6, domingo é 0)
  • %H: Hora (00-23)
  • %M: Minuto (00-59)
  • %S: Segundo (00-59)

Você pode usar qualquer caractere separador entre especificadores (p. ex. -, :, /). Por exemplo, STRFTIME('%d-%m-%Y', date) e STRFTIME('%d:%m:%Y', date) ambos combinam dia, mês e ano — apenas com separadores diferentes.

Você pode combinar essas funções em consultas:

-- Find all records from current year
SELECT * FROM table1
WHERE STRFTIME('%Y', date_column) = STRFTIME('%Y', 'now')
challenge icon

Desafio

Fácil

Tabelas e colunas disponíveis:

  • <strong>events</strong>: <strong>id</strong>, <strong>start</strong>, <strong>end</strong>

Escreva uma consulta que mostre:

  • O ID do evento
  • A data de início formatada como "DD-MM-YYYY". Chame esta coluna formatted_start
  • A data de fim formatada como "DD-MM-YYYY". Chame esta coluna formatted_end
  • A duração em dias entre início e fim, arredondada para o número inteiro mais próximo. Chame esta coluna duration_days

Filtre apenas as linhas em que o ano da coluna start é 2009 (STRFTIME() retorna uma string e não um número).

Ordene os resultados pela duração em dias em ordem decrescente.

Lembrete: Para calcular a diferença entre datas, use: JULIANDAY(end) - JULIANDAY(start) e use ROUND() para arredondar para números inteiros.

Folha de consulta

O SQL fornece várias funções úteis para manipular e formatar datas:

  • DATE() - Converte uma string em uma data
  • STRFTIME() - Formata datas de acordo com parâmetros especificados
  • DATE('now') - Obtém a data atual

Converter string para data:

SELECT DATE('2023-05-15 13:45:00')
-- Retorna: 2023-05-15

SELECT DATE('now')
-- Retorna a data atual

Extrair partes da data usando STRFTIME():

-- Obter ano
SELECT STRFTIME('%Y', '2023-05-15')
-- Retorna: 2023

-- Obter mês
SELECT STRFTIME('%m', '2023-05-15')
-- Retorna: 05

-- Obter dia
SELECT STRFTIME('%d', '2023-05-15')
-- Retorna: 15

-- Mostrar combinação de ano e dia
SELECT STRFTIME('%Y:%d', '2023-05-15')
-- Retorna: 2023:15

Especificadores de formato comuns:

  • %Y: Ano (4 dígitos)
  • %m: Mês (01-12)
  • %d: Dia do mês (01-31)
  • %H: Hora (00-23)
  • %M: Minuto (00-59)
  • %S: Segundo (00-59)

Usar em cláusulas WHERE:

-- Encontrar todos os registros do ano atual
SELECT * FROM table1
WHERE STRFTIME('%Y', date_column) = STRFTIME('%Y', 'now')

Calcular diferenças de datas usando JULIANDAY():

JULIANDAY(end_date) - JULIANDAY(start_date)

Experimente você mesmo

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos