En MySQL, el YEARWEEK()
función devuelve el año y la semana para una fecha determinada. Proporciona la fecha como argumento y la función devolverá el resultado correspondiente.
También tiene la opción de especificar si la semana comienza el domingo o el lunes, y si la semana debe estar en el rango de 0 a 53 o de 1 a 53.
Sintaxis
Puede utilizar cualquiera de los siguientes dos formularios:
YEARWEEK(date) YEARWEEK(date,mode)
donde:
date
es la fecha desde la que desea que se devuelva el año y el número de semana.mode
es un número que especifica si la semana debe comenzar el domingo o el lunes y si la semana debe estar en el rango de 0 a 53 o de 1 a 53. Consulte la siguiente tabla para ver los posibles valores de modo.
Si no se especifica ningún modo, el modo es 0
.
Ejemplo 1:uso básico
Aquí hay un ejemplo para demostrarlo.
SELECT YEARWEEK('2021-01-25') As 'Result';
Resultado:
+--------+ | Result | +--------+ | 202104 | +--------+
Aquí hay un ejemplo con una fecha diferente.
SELECT YEARWEEK('1999-12-25') As 'Result';
Resultado:
+--------+ | Result | +--------+ | 199951 | +--------+
Ejemplo 2:especificar un modo
Si no especifica un segundo argumento, YEARWEEK()
la función usa 0
como el modo.
Sin embargo, también tiene la opción de proporcionar un segundo argumento para especificar qué modo usar. Ejemplo:
SELECT YEARWEEK('2019-11-23', 7) AS 'Mode 7';
Resultado:
+--------+ | Mode 7 | +--------+ | 201946 | +--------+
Los valores de modo posibles son los siguientes.
Modo | Primer día de la semana | Rango | La semana 1 es la primera semana... |
---|---|---|---|
0 | domingo | 0-53 | con un domingo en este año |
1 | lunes | 0-53 | con 4 o más días este año |
2 | domingo | 1-53 | con un domingo en este año |
3 | lunes | 1-53 | con 4 o más días este año |
4 | domingo | 0-53 | con 4 o más días este año |
5 | lunes | 0-53 | con un lunes en este año |
6 | domingo | 1-53 | con 4 o más días este año |
7 | lunes | 1-53 | con un lunes en este año |
Estos son los mismos valores que se pueden usar con WEEK()
función.
Una diferencia entre estas dos funciones es que WEEK()
La función deriva su modo predeterminado del default_week_format
variable del sistema (el valor predeterminado de esta variable es 0
). YEARWEEK()
por otro lado, ignora esta configuración y usa 0
como su valor predeterminado (independientemente del default_week_format
ajuste).
Ejemplo 3:Comparación de modos
Aquí hay una comparación rápida de cómo puede obtener diferentes resultados según el modo que se use.
Los siguientes tres ejemplos usan el mismo código, pero con tres fechas diferentes. Estas fechas son consecutivas:ocurren los días 5, 6 y 7 de enero. Como puede ver, los resultados pueden ser bastante diferentes según la fecha exacta y el modo que se utilice.
Fecha 1
SET @date = '2019-01-05'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Resultado:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201852 | 201901 | 201852 | 201901 | 201901 | 201853 | 201901 | 201853 | +--------+--------+--------+--------+--------+--------+--------+--------+
Fecha 2
SET @date = '2019-01-06'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Resultado:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201901 | 201901 | 201901 | 201901 | 201902 | 201853 | 201902 | 201853 | +--------+--------+--------+--------+--------+--------+--------+--------+
Fecha 3
SET @date = '2019-01-07'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Resultado:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201901 | 201902 | 201901 | 201902 | 201902 | 201901 | 201902 | 201901 | +--------+--------+--------+--------+--------+--------+--------+--------+