logo

Funcția YEARWEEK() în MySQL

SĂPTĂMÂNĂ DE ANUL Funcția () din MySQL este folosită pentru a găsi anul și săptămâna pentru o dată dată. Dacă data este NULL, funcția YEARWEEK() va returna NULL. În caz contrar, returnează valoarea anului, care variază de la 1000 la 9999 și valoarea săptămânii, care variază între 0 și 53.

Sintaxa:



 YEARWEEK(date, mode)>

Parametru: Această metodă acceptă doi parametri așa cum a fost menționat mai sus și descris mai jos:

    date : data sau data ora de la care dorim să extragem anul și săptămâna. mod : Specifică în ce zi începe săptămâna. Următorul tabel descrie modul în care funcționează argumentul mode.
Modul Prima zi a săptămânii Gamă Săptămâna 1 este prima săptămână...
0 duminică 0-53 cu o duminică din acest an
1 luni 0-53 cu 4 sau mai multe zile anul acesta
2 duminică 1-53 cu o duminică din acest an
3 luni 1-53 cu 4 sau mai multe zile anul acesta
4 duminică 0-53 cu 4 sau mai multe zile anul acesta
5 luni 0-53 cu o zi de luni în acest an
6 duminică 1-53 cu 4 sau mai multe zile anul acesta
7 luni 1-53 cu o zi de luni în acest an

Se intoarce : Acesta returnează valoarea anului și a săptămânii împreună.

Exemplul-1: Găsirea anului și a săptămânii curente folosind funcția Year() pe 28.09.2020.



 SELECT YEARWEEK(NOW()) AS Current_YearWeek;>

Ieșire:

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

Deci, anul curent este 2020 și numărul săptămânii este 39.

Exemplul-2: Găsirea anului și a săptămânii de la data dată, folosind funcția YEARWEEK().



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

Ieșire:

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

Deci, anul este 2018 și numărul săptămânii este 16 în acest exemplu.

Exemplul-3: Găsirea Anului și Săptămânii de la data dată Folosind funcția YEARWEEK() când data este NULL.

 SELECT YEARWEEK(NULL) AS Year_Week ;>

Ieșire:

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

Exemplul-4: În acest exemplu vom găsi numărul de studenți înscriși la un curs pentru fiecare săptămână dintr-un an. Pentru a demonstra creați un tabel numit.

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

Acum inserând câteva date în tabelul Produs:

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

Deci, masa noastră arată astfel:

 mysql>selectați * din Curs; +-------------+------------+---------------+------ -------+ | Nume_curs | Student_id | Nume_student | Înscriere_Data | +-------------+------------+---------------+------ -------+ | 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 rânduri în set (0.00 sec)>

Acum, vom găsi numărul de studenți înscriși la curs pentru fiecare săptămână și an.

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

Ieșire:

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