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 de acuerdo con los parámetros especificados
  3. DATE('now') - Obtiene la fecha actual:

Por ejemplo, convertir una cadena a fecha:

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

SELECT DATE('now')
-- Devuelve la fecha actual

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

-- Obtener el año
SELECT STRFTIME('%Y', '2023-05-15')
-- Devuelve: 2023

-- Obtener el mes
SELECT STRFTIME('%m', '2023-05-15')
-- Devuelve: 05

-- Obtener el día
SELECT STRFTIME('%d', '2023-05-15')
-- Devuelve: 15

-- Mostrar combinación de año y día (se puede usar cualquier separador)
SELECT STRFTIME('%Y:%d', '2023-05-15')
-- Devuelve: 2023:15

-- Usar un guion como separador en su lugar
SELECT STRFTIME('%d-%m-%Y', '2023-05-15')
-- Devuelve: 15-05-2023

-- Obtener el día de la semana
SELECT STRFTIME('%w', '2023-05-15')
-- Devuelve: 1 (lunes; el domingo es 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, el domingo es 0)
  • %H: Hora (00-23)
  • %M: Minuto (00-59)
  • %S: Segundo (00-59)

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

Puedes combinar estas funciones en las consultas:

-- Buscar todos los registros del año actual
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 finalización formateada como "DD-MM-YYYY". Llama a esta columna formatted_end
  • La duración en días entre el inicio y el fin, redondeada al número entero más cercano. Llama a esta columna duration_days

Filtra solo las filas en las que 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.

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