Saltar al contenido principal
Documentos
FuncionesExpresionesKeywordsDeclaracionesCláusulas

Función WEEK() de MySQL

La función `WEEK()` de MySQL se utiliza para extraer el número de semana de una fecha dada. Ayuda a organizar y analizar los datos según intervalos semanales.

Utilización
La función `WEEK()` se utiliza normalmente cuando necesitas agrupar o filtrar registros por semanas. Devuelve un número entero que representa el número de semana del año para una fecha especificada.

sql
WEEK(date, [mode])

En esta sintaxis, `fecha` es la fecha de la que extraer el número de la semana, y `modo` es un argumento opcional que define el día de inicio de la semana (por ejemplo, domingo o lunes). Si no se especifica ningún modo, el valor por defecto es el modo 0, en el que la semana comienza el domingo.

Valores de modo

  • 0: La semana comienza el domingo. La Semana 1 es la primera semana con domingo de este año.
  • 1: La semana comienza el lunes. Sigue la norma ISO-8601, según la cual la semana 1 es la primera semana con al menos 4 días en el nuevo año.
  • 2: La semana comienza el domingo. La Semana 1 es la primera semana con más de la mitad de sus días en el nuevo año.
  • 3: La semana comienza el lunes. La Semana 1 es la primera semana con más de la mitad de sus días en el nuevo año.
  • 4: La semana comienza el domingo. La Semana 1 es la primera semana con al menos 4 días en el nuevo año.
  • 5: La semana comienza el lunes. La Semana 1 es la primera semana con lunes de este año.
  • 6: La semana comienza el sábado. La Semana 1 es la primera semana con sábado de este año.
  • 7: La semana comienza el domingo. La Semana 1 es la primera semana con domingo de este año.

Ejemplos

1. Extracción semanal básica

sql
SELECT WEEK('2023-10-04');

Este ejemplo devuelve el número de semana de la fecha `2023-10-04`. Por defecto, la semana empieza el domingo.

2. Semana Extracción con Modo

sql
SELECT WEEK('2023-10-04', 1);

Aquí, la función devuelve el número de la semana con un modo de `1`, lo que significa que la semana empieza el lunes según la norma ISO-8601.

3. Utilizar WEEK() en una consulta

sql
SELECT COUNT(*)
FROM orders
WHERE WEEK(order_date) = WEEK(CURDATE());

Este ejemplo cuenta el número de pedidos realizados en la semana actual, utilizando `WEEK()` para comparar el número de semana de `fecha_pedido` con el número de semana de la fecha actual.

Consejos y buenas prácticas

  • Elige el modo adecuado. Utiliza el argumento `modo` para alinearlo con tu lógica empresarial, especialmente cuando trates con datos internacionales.
  • Cálculos semanales coherentes. Utiliza el mismo "modo" en todas tus consultas para mantener la coherencia en los cálculos semanales.
  • Consideraciones sobre el rendimiento. Cuando utilices `WEEK()` en cláusulas `WHERE`, considera la posibilidad de indexar la columna fecha para mejorar el rendimiento de la consulta.
  • Manejando semanas que abarcan dos años. Ten en cuenta que las distintas modalidades tratan de forma diferente las semanas que abarcan dos años; asegúrate de que tu elección de modalidad refleja cómo quieres que se traten esas semanas.
  • Combínalo con otras funciones de fecha. Utiliza `WEEK()` junto con funciones como `YEAR()` para un análisis de datos más granular basado en el tiempo.
  • Ten en cuenta las zonas horarias. Ten en cuenta cómo las zonas horarias pueden afectar a los cálculos de fechas si tu conjunto de datos incluye datos internacionales.

Perfeccionamiento de SQL para principiantes

Adquiere los conocimientos de SQL para interactuar con tus datos y consultarlos.
Empieza a aprender gratis