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