Menu
Coddy logo textTech

Handling Dates Part 3

Parte de la sección Fundamentos del Journey de SQL de Coddy — lección 33 de 72.

SQL proporciona varias funciones útiles para manipular y formatear fechas. Aquí hay algunas funciones de fecha comunes:

  1. DATE() - Convierte una cadena a una fecha
  2. STRFTIME() - Formatea fechas según parámetros especificados
  3. DATE('now') - Obtiene la fecha actual:

Por ejemplo, convertir cadena a fecha:

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

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

Por ejemplo, extraer año, mes y día de la fecha:

-- 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 comunes:

  • %Y: Año (4 dígitos)
  • %m: Mes (01-12)
  • %d: Día del mes (01-31)
  • %w: Día de la semana (0-6, domingo es 0)
  • %H: Hora (00-23)
  • %M: Minuto (00-59)
  • %S: Segundo (00-59)

Puedes usar cualquier carácter separador entre especificadores (p. ej. -, :, /). Por ejemplo, STRFTIME('%d-%m-%Y', date) y STRFTIME('%d:%m:%Y', date) combinan día, mes y año — solo con separadores diferentes.

Puedes combinar estas funciones en consultas:

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

Desafío

Fácil

Tablas y columnas disponibles:

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

Escribe una consulta que muestre:

  • El ID del evento
  • La fecha de inicio formateada como "DD-MM-YYYY". Llama a esta columna formatted_start
  • La fecha de fin formateada como "DD-MM-YYYY". Llama a esta columna formatted_end
  • La duración en días entre inicio y fin, redondeada al número entero más cercano. Llama a esta columna duration_days

Filtra solo las filas donde el año de la columna start sea 2009 (STRFTIME() devuelve una cadena y no un número).

Ordena los resultados por los días de duración en orden descendente.

Recordatorio: Para calcular la diferencia entre fechas usa: JULIANDAY(end) - JULIANDAY(start) y usa ROUND() para redondear a números enteros.

Hoja de referencia

SQL proporciona varias funciones útiles para manipular y formatear fechas:

  • DATE() - Convierte una cadena a una fecha
  • STRFTIME() - Formatea fechas según parámetros especificados
  • DATE('now') - Obtiene la fecha actual

Convertir cadena a fecha:

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

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

Extraer partes de la fecha usando STRFTIME():

-- 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
SELECT STRFTIME('%Y:%d', '2023-05-15')
-- Returns: 2023:15

Especificadores de formato comunes:

  • %Y: Año (4 dígitos)
  • %m: Mes (01-12)
  • %d: Día del mes (01-31)
  • %H: Hora (00-23)
  • %M: Minuto (00-59)
  • %S: Segundo (00-59)

Uso en cláusulas WHERE:

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

Calcular diferencias de fechas usando JULIANDAY():

JULIANDAY(end_date) - JULIANDAY(start_date)

Pruébalo tú mismo

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos