Función AÑO SEMANA() en MySQL

La función YEARWEEK() en MySQL se usa para encontrar el año y la semana para una fecha determinada. Si la fecha es NULL, la función YEARWEEK() devolverá NULL. De lo contrario, devuelve el valor del año que oscila entre 1000 y 9999 y el valor de la semana que oscila entre 0 y 53.

Sintaxis:

 
YEARWEEK(date, mode)

Parámetro: este método acepta dos parámetros como se mencionó anteriormente y se describe a continuación:

  • date: La fecha o datetime de la que queremos extraer el año y la semana.
  • modo: Especifica en qué día comienza la semana. La siguiente tabla describe cómo funciona el argumento de modo.
Modo Primer dia 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

Devoluciones: Devuelve el valor del año y la semana juntos.

Ejemplo-1: encontrar el año y la semana actuales usando la función Year() el 28/09/2020.

SELECT YEARWEEK(NOW()) AS Current_YearWeek;

Producción :

+------------------+
| Current_YearWeek |
+------------------+
|           202039 |
+------------------+
1 row in set (0.00 sec)

Entonces, el año actual es 2020 y el número de semana es 39.

Ejemplo-2: encontrar el año y la semana a partir de una fecha y hora determinada utilizando la función YEARWEEK().

SELECT YEARWEEK('2018-04-22 08:09:22') AS Year_Week ;

Producción :

+-----------+
| Year_Week |
+-----------+
|    201816 |
+-----------+

Entonces, el año es 2018 y el número de semana es 16 en este ejemplo.

Ejemplo-3: encontrar el año y la semana a partir de una fecha y hora determinada utilizando la función YEARWEEK() cuando la fecha es NULL.

SELECT YEARWEEK(NULL) AS Year_Week ;

Producción :

+-----------+
| Year_Week |
+-----------+
|    NULL   |
+-----------+

Ejemplo-4: En este ejemplo vamos a encontrar el número de estudiantes matriculados en un curso por cada semana en un año. Para demostrar, cree una tabla llamada.

Curso :

CREATE TABLE  Course(
       Course_name  VARCHAR(100) NOT NULL,
       Student_id INT NOT NULL,  
       Student_name VARCHAR(100) NOT NULL,
       Enroll_Date Date NOT NULL,
       PRIMARY KEY(Student_id)
);

Ahora insertando algunos datos en la tabla Producto:

INSERT INTO 
    Course(Course_Name, Student_id, Student_name, Enroll_Date)
VALUES
    ( 'CS101', 161011, 'Amit Singh', '2019-11-26' ),
    ( 'CS101', 161029, 'Arun Kumar', '2019-11-30' ),
    ( 'CS101', 161031, 'Sanya Jain', '2019-12-08' ),
    ( 'CS101', 161058, 'Riya Shah', '2019-12-15' ),
    ( 'CS101', 162051, 'Amit Sharma', '2019-12-18' ),
        ( 'CS101', 161951, 'Sayan Singh', '2019-12-26' ),
        ( 'CS101', 167051, 'Rishi Jana', '2020-01-02' ),
    ( 'CS101', 168001, 'Aniket Dravid', '2020-01-10' ),
    ( 'CS101', 168051, 'Rita Singh', '2020-01-13' ),
    ( 'CS101', 166051, 'Kalyan Ghandi', '2020-01-26' ) ;

Entonces, nuestra tabla se ve así:

mysql> select * from Course;
+-------------+------------+---------------+-------------+
| Course_name | Student_id | Student_name  | Enroll_Date |
+-------------+------------+---------------+-------------+
| CS101       |     161011 | Amit Singh    | 2019-11-26  |
| CS101       |     161029 | Arun Kumar    | 2019-11-30  |
| CS101       |     161031 | Sanya Jain    | 2019-12-08  |
| CS101       |     161058 | Riya Shah     | 2019-12-15  |
| CS101       |     161951 | Sayan Singh   | 2019-12-26  |
| CS101       |     162051 | Amit Sharma   | 2019-12-18  |
| CS101       |     166051 | Kalyan Ghandi | 2020-01-26  |
| CS101       |     167051 | Rishi Jana    | 2020-01-02  |
| CS101       |     168001 | Aniket Dravid | 2020-01-10  |
| CS101       |     168051 | Rita Singh    | 2020-01-13  |
+-------------+------------+---------------+-------------+
10 rows in set (0.00 sec)

Ahora, vamos a encontrar el número de estudiantes matriculados en el curso para cada semana y año.

SELECT 
    YEARWEEK(Enroll_Date) YearandWeek, 
    COUNT(Student_id) Student_Enrolled
FROM 
    Course
GROUP BY YEARWEEK(Enroll_Date)
ORDER BY YEARWEEK(Enroll_Date);

Producción :

+-------------+------------------+
| YearandWeek | Student_Enrolled |
+-------------+------------------+
|      201947 |                2 |
|      201949 |                1 |
|      201950 |                2 |
|      201951 |                1 |
|      201952 |                1 |
|      202001 |                1 |
|      202002 |                1 |
|      202004 |                1 |
+-------------+------------------+
8 rows in set (0.00 sec).

Publicación traducida automáticamente

Artículo escrito por jana_sayantan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *