logo

YEARWEEK() Funktion i MySQL

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