sql >> Base de Datos >  >> RDS >> Mysql

AÑO SEMANA() Ejemplos – MySQL

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 |
+--------+--------+--------+--------+--------+--------+--------+--------+