ÅRSVECKAN () funktion i MySQL används för att hitta år och vecka för ett givet datum. Om datumet är NULL, returnerar funktionen YEARWEEK() NULL. Annars returnerar den värdet på året som sträcker sig från 1000 till 9999 och värdet på veckan som varierar mellan 0 och 53.
Syntax :
YEARWEEK(date, mode)>
Parameter: Denna metod accepterar två parametrar som nämnts ovan och beskrivs nedan:
- date : Det datum eller datetime från vilket vi vill extrahera år och vecka. läge : Det anger vilken dag veckan börjar på. Följande tabell beskriver hur modargumentet fungerar.
| Läge | Första dagen i veckan | Räckvidd | Vecka 1 är den första veckan... |
|---|---|---|---|
| 0 | söndag | 0-53 | med en söndag i år |
| 1 | måndag | 0-53 | med 4 eller fler dagar i år |
| 2 | söndag | 1-53 | med en söndag i år |
| 3 | måndag | 1-53 | med 4 eller fler dagar i år |
| 4 | söndag | 0-53 | med 4 eller fler dagar i år |
| 5 | måndag | 0-53 | med en måndag i år |
| 6 | söndag | 1-53 | med 4 eller fler dagar i år |
| 7 | måndag | 1-53 | med en måndag i år |
Returnerar: Det returnerar värdet av år och vecka tillsammans.
Exempel-1: Hitta aktuellt år och vecka med funktionen Year() den 28/09/2020.
SELECT YEARWEEK(NOW()) AS Current_YearWeek;>
Utgång:
+------------------+ | Current_YearWeek | +------------------+ | 202039 | +------------------+ 1 row in set (0.00 sec)>
Så innevarande år är 2020 och veckonummer är 39.
Exempel-2: Hitta år och vecka från angiven datum och klockslag med funktionen YEARWEEK() .
SELECT YEARWEEK('2018-04-22 08:09:22') AS Year_Week ;> Utgång:
+-----------+ | Year_Week | +-----------+ | 201816 | +-----------+>
Så, året är 2018 och veckonummer är 16 i det här exemplet.
Exempel-3: Hitta år och vecka från given datetime Använda YEARWEEK() Funktion när datumet är NULL.
SELECT YEARWEEK(NULL) AS Year_Week ;>
Utgång:
+-----------+ | Year_Week | +-----------+ | NULL | +-----------+>
Exempel-4: I det här exemplet kommer vi att hitta antalet studenter som är inskrivna i en kurs för varje vecka under ett år. För att demonstrera skapa en tabell med namnet.
Kurs:
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) );>
Infogar nu några data i produkttabellen:
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' ) ;>
Så vår tabell ser ut så här:
mysql>välj * från Kurs; +-------------+-------------+--------------+------ -------+ | Kursnamn | Student_id | Studentnamn | 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 rader i set (0,00 sek)>
Nu ska vi hitta antalet studenter som är inskrivna i kursen för varje vecka och år.
SELECT YEARWEEK(Enroll_Date) YearandWeek, COUNT(Student_id) Student_Enrolled FROM Course GROUP BY YEARWEEK(Enroll_Date) ORDER BY YEARWEEK(Enroll_Date);>
Utgång:
+-------------+------------------+ | 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).>