ÅRSUGE () funktion i MySQL bruges til at finde år og uge for en given dato. Hvis datoen er NULL, returnerer funktionen YEARWEEK() NULL. Ellers returnerer den værdien af året, der spænder fra 1000 til 9999, og værdien af ugen, der varierer mellem 0 og 53.
Syntaks:
YEARWEEK(date, mode)>
Parameter: Denne metode accepterer to parametre som nævnt ovenfor og beskrevet nedenfor:
- dato : Datoen eller datoklokkeslættet, som vi ønsker at udtrække år og uge fra. tilstand : Den angiver, hvilken dag ugen starter på. Følgende tabel beskriver, hvordan tilstandsargumentet fungerer.
| Mode | Første dag i ugen | Rækkevidde | Uge 1 er den første uge... |
|---|---|---|---|
| 0 | Søndag | 0-53 | med en søndag i år |
| 1 | Mandag | 0-53 | med 4 eller flere dage i år |
| 2 | Søndag | 1-53 | med en søndag i år |
| 3 | Mandag | 1-53 | med 4 eller flere dage i år |
| 4 | Søndag | 0-53 | med 4 eller flere dage i år |
| 5 | Mandag | 0-53 | med en mandag i år |
| 6 | Søndag | 1-53 | med 4 eller flere dage i år |
| 7 | Mandag | 1-53 | med en mandag i år |
Vender tilbage : Det returnerer værdien af år og uge sammen.
Eksempel-1: Find det aktuelle år og uge ved at bruge funktionen Year() den 28/09/2020.
SELECT YEARWEEK(NOW()) AS Current_YearWeek;>
Output:
+------------------+ | Current_YearWeek | +------------------+ | 202039 | +------------------+ 1 row in set (0.00 sec)>
Så det aktuelle år er 2020 og ugenummer er 39.
Eksempel-2: Finde år og uge fra givet dato og klokkeslæt ved hjælp af YEARWEEK() funktion.
SELECT YEARWEEK('2018-04-22 08:09:22') AS Year_Week ;> Output:
+-----------+ | Year_Week | +-----------+ | 201816 | +-----------+>
Så året er 2018, og ugenummeret er 16 i dette eksempel.
Eksempel-3: Finde år og uge fra givet dato og klokkeslæt Brug af YEARWEEK() funktion, når datoen er NULL.
SELECT YEARWEEK(NULL) AS Year_Week ;>
Output:
+-----------+ | Year_Week | +-----------+ | NULL | +-----------+>
Eksempel-4: I dette eksempel skal vi finde antallet af studerende, der er tilmeldt et kursus for hver uge i et år. For at demonstrere opret en tabel med navnet.
Rute :
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) );>
Indsætter nu nogle 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å vores tabel ser sådan ud:
mysql>vælg * fra Kursus; +-------------+-------------+------------------- -------+ | Kursusnavn | Student_id | Elevnavn | Tilmeldingsdato | +-------------+-------------+------------------- -------+ | CS101 | 161011 | Amit Singh | 2019-11-26 | | CS101 | 161029 | Arun Kumar | 30-11-2019 | | 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 | 26-01-2020 | | CS101 | 167051 | Rishi Jana | 2020-01-02 | | CS101 | 168001 | Aniket Dravid | 2020-01-10 | | CS101 | 168051 | Rita Singh | 13-01-2020 | +-------------+-------------+------------------- -------+ 10 rækker i sæt (0,00 sek)>
Nu skal vi finde antallet af studerende, der er tilmeldt kurset for hver uge og år.
SELECT YEARWEEK(Enroll_Date) YearandWeek, COUNT(Student_id) Student_Enrolled FROM Course GROUP BY YEARWEEK(Enroll_Date) ORDER BY YEARWEEK(Enroll_Date);>
Output:
+-------------+------------------+ | 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).>