logo

Funció YEARWEEK() a MySQL

SETMANA DE L'ANY () a MySQL s'utilitza per trobar l'any i la setmana per a una data determinada. Si la data és NULL, la funció YEARWEEK() retornarà NULL. En cas contrari, retorna el valor de l'any que oscil·la entre 1000 i 9999 i el valor de la setmana que oscil·la entre 0 i 53.

Sintaxi:

 YEARWEEK(date, mode)>

Paràmetre: Aquest mètode accepta dos paràmetres com s'ha esmentat anteriorment i es descriu a continuació:



    data : la data o datahora de la qual volem extreure l'any i la setmana. mode : especifica quin dia comença la setmana. La taula següent descriu com funciona l'argument mode.
Mode Primer dia de la setmana Interval La setmana 1 és la primera setmana...
0 diumenge 0-53 amb un diumenge d'enguany
1 dilluns 0-53 amb 4 o més dies aquest any
2 diumenge 1-53 amb un diumenge d'enguany
3 dilluns 1-53 amb 4 o més dies aquest any
4 diumenge 0-53 amb 4 o més dies aquest any
5 dilluns 0-53 amb un dilluns d'enguany
6 diumenge 1-53 amb 4 o més dies aquest any
7 dilluns 1-53 amb un dilluns d'enguany

Devolucions: Torna el valor de l'any i la setmana junts.

Exemple-1: Trobar l'any i la setmana actuals amb la funció Year() el 28/09/2020.

 SELECT YEARWEEK(NOW()) AS Current_YearWeek;>

Sortida:

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

Per tant, l'any actual és el 2020 i el número de setmana és 39.

Exemple-2: Trobar l'any i la setmana a partir d'una data determinada utilitzant la funció YEARWEEK().

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

Sortida:

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

Per tant, l'any és el 2018 i el número de la setmana és 16 en aquest exemple.

Exemple-3: Trobar l'any i la setmana a partir d'una data determinada utilitzant la funció YEARWEEK() quan la data és NULL.

 SELECT YEARWEEK(NULL) AS Year_Week ;>

Sortida:

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

Exemple-4: En aquest exemple trobarem el nombre d'estudiants matriculats en un curs per a cada setmana d'un any. Per demostrar, creeu una taula anomenada.

Curs:

 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) );>

Ara inserint algunes dades a la taula Producte:

 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' ) ;>

Així doncs, la nostra taula sembla:

 mysql>seleccioneu * del curs; +-------------+------------+---------------+------ -------+ | Nom_curs | Student_id | Nom_estudiant | Data_inscripció | +-------------+------------+---------------+------ -------+ | CS101 | 161011 | Amit Singh | 26-11-2019 | | CS101 | 161029 | Arun Kumar | 30-11-2019 | | CS101 | 161031 | Sanya Jain | 08-12-2019 | | CS101 | 161058 | Riya Shah | 15-12-2019 | | CS101 | 161951 | Sayan Singh | 26-12-2019 | | CS101 | 162051 | Amit Sharma | 18-12-2019 | | CS101 | 166051 | Kalyan Ghandi | 26-01-2020 | | CS101 | 167051 | Rishi Jana | 2020-01-02 | | CS101 | 168001 | Aniket Dravid | 10-01-2020 | | CS101 | 168051 | Rita Singh | 13-01-2020 | +-------------+------------+---------------+------ -------+ 10 files al conjunt (0,00 segons)>

Ara, trobarem el nombre d'alumnes matriculats al curs per a cada setmana i any.

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

Sortida:

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