ÅRSUKE ()-funksjonen i MySQL brukes til å finne år og uke for en gitt dato. Hvis datoen er NULL, vil funksjonen YEARWEEK() returnere NULL. Ellers returnerer den verdien av året som varierer fra 1000 til 9999 og verdien av uken som varierer mellom 0 og 53.
Syntaks:
YEARWEEK(date, mode)>
Parameter : Denne metoden godtar to parametere som nevnt ovenfor og beskrevet nedenfor:
- dato : Datoen eller datoklokkeslettet som vi ønsker å trekke ut året og uken fra. modus : Den spesifiserer hvilken dag uken starter på. Tabellen nedenfor beskriver hvordan modusargumentet fungerer.
| Modus | Første dag i uken | Område | Uke 1 er den første uken... |
|---|---|---|---|
| 0 | søndag | 0-53 | med en søndag i år |
| 1 | mandag | 0-53 | med 4 eller flere dager i år |
| 2 | søndag | 1-53 | med en søndag i år |
| 3 | mandag | 1-53 | med 4 eller flere dager i år |
| 4 | søndag | 0-53 | med 4 eller flere dager i år |
| 5 | mandag | 0-53 | med en mandag i år |
| 6 | søndag | 1-53 | med 4 eller flere dager i år |
| 7 | mandag | 1-53 | med en mandag i år |
Returnerer: Den returnerer verdien av år og uke sammen.
Eksempel-1: Finne gjeldende år og uke ved å bruke Year()-funksjonen 28/09/2020.
SELECT YEARWEEK(NOW()) AS Current_YearWeek;>
Utgang:
+------------------+ | Current_YearWeek | +------------------+ | 202039 | +------------------+ 1 row in set (0.00 sec)>
Så inneværende år er 2020 og ukenummer er 39.
Eksempel-2: Finne år og uke fra gitt dato og klokkeslett ved å bruke funksjonen YEARWEEK().
SELECT YEARWEEK('2018-04-22 08:09:22') AS Year_Week ;> Utgang:
+-----------+ | Year_Week | +-----------+ | 201816 | +-----------+>
Så året er 2018 og ukenummer er 16 i dette eksemplet.
Eksempel-3: Finne år og uke fra gitt datoklokke Bruke YEARWEEK()-funksjonen når datoen er NULL.
SELECT YEARWEEK(NULL) AS Year_Week ;>
Utgang:
+-----------+ | Year_Week | +-----------+ | NULL | +-----------+>
Eksempel-4: I dette eksemplet skal vi finne antall studenter som er påmeldt et kurs for hver uke i løpet av et år. For å demonstrere lage en tabell med navnet.
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) );>
Setter nå inn noen 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å tabellen vår ser slik ut:
mysql>velg * fra Kurs; +-------------+-------------+---------------+------ -------+ | Kursnavn | Student_id | Studentnavn | Enroll_Date | +-------------+-------------+---------------+------ -------+ | CS101 | 161011 | Amit Singh | 26-11-2019 | | 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 | 26-12-2019 | | 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 sett (0,00 sek)>
Nå skal vi finne antall studenter som er påmeldt kurset for hver uke og år.
SELECT YEARWEEK(Enroll_Date) YearandWeek, COUNT(Student_id) Student_Enrolled FROM Course GROUP BY YEARWEEK(Enroll_Date) ORDER BY YEARWEEK(Enroll_Date);>
Utgang:
+-------------+------------------+ | 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).>