VUOSI VIIKKO ()-funktiota MySQL:ssä käytetään etsimään vuosi ja viikko tietyltä päivämäärältä. Jos päivämäärä on NULL, YEARWEEK()-funktio palauttaa NULL:n. Muussa tapauksessa se palauttaa vuoden arvon, joka vaihtelee välillä 1000 - 9999, ja viikon arvon, joka vaihtelee välillä 0 - 53.
Syntaksi :
YEARWEEK(date, mode)>
Parametri : Tämä menetelmä hyväksyy kaksi edellä mainittua ja alla kuvattua parametria:
- päivämäärä : Päivämäärä tai päivämäärä, josta haluamme poimia vuoden ja viikon. tila : Se määrittää, minä päivänä viikko alkaa. Seuraavassa taulukossa kuvataan, miten mode-argumentti toimii.
| tila | Viikon ensimmäinen päivä | Alue | Viikko 1 on ensimmäinen viikko… |
|---|---|---|---|
| 0 | sunnuntai | 0-53 | sunnuntaina tänä vuonna |
| 1 | maanantai | 0-53 | 4 päivää tai enemmän tänä vuonna |
| 2 | sunnuntai | 1-53 | sunnuntaina tänä vuonna |
| 3 | maanantai | 1-53 | 4 päivää tai enemmän tänä vuonna |
| 4 | sunnuntai | 0-53 | 4 päivää tai enemmän tänä vuonna |
| 5 | maanantai | 0-53 | maanantaina tänä vuonna |
| 6 | sunnuntai | 1-53 | 4 päivää tai enemmän tänä vuonna |
| 7 | maanantai | 1-53 | maanantaina tänä vuonna |
Palautukset: Se palauttaa vuoden ja viikon arvon yhdessä.
Esimerkki-1: Nykyisen vuoden ja viikon etsiminen Year()-funktiolla 28.9.2020.
SELECT YEARWEEK(NOW()) AS Current_YearWeek;>
Lähtö:
+------------------+ | Current_YearWeek | +------------------+ | 202039 | +------------------+ 1 row in set (0.00 sec)>
Kuluva vuosi on siis 2020 ja viikon numero on 39.
Esimerkki-2: Vuoden ja viikon etsiminen annetusta päivämäärä-ajasta käyttämällä YEARWEEK()-funktiota.
SELECT YEARWEEK('2018-04-22 08:09:22') AS Year_Week ;> Lähtö:
+-----------+ | Year_Week | +-----------+ | 201816 | +-----------+>
Joten vuosi on 2018 ja viikon numero on 16 tässä esimerkissä.
Esimerkki-3: Vuoden ja viikon etsiminen annetusta päivämäärä-ajasta YEARWEEK()-funktion avulla, kun päivämäärä on NULL.
SELECT YEARWEEK(NULL) AS Year_Week ;>
Lähtö:
+-----------+ | Year_Week | +-----------+ | NULL | +-----------+>
Esimerkki-4: Tässä esimerkissä aiomme löytää kurssille ilmoittautuneiden opiskelijoiden määrän jokaiselta viikolta vuodessa. Luo taulukko nimeltä.
Kurssi:
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) );>
Lisätään nyt joitain tietoja tuotetaulukkoon:
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' ) ;>
Pöytämme näyttää siis tältä:
mysql>valitse * Kurssista; +-------------+-------------+------------------------- -------+ | Kurssin_nimi | Opiskelijatunnus | Opiskelijan_nimi | Ilmoittautumispäivä | +-------------+-------------+------------------------- -------+ | 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 | 15.12.2019 | | CS101 | 161951 | Sayan Singh | 26.12.2019 | | CS101 | 162051 | Amit Sharma | 18.12.2019 | | CS101 | 166051 | Kalyan Ghandi | 26.1.2020 | | CS101 | 167051 | Rishi Jana | 2020-01-02 | | CS101 | 168001 | Aniket Dravid | 2020-01-10 | | CS101 | 168051 | Rita Singh | 13.1.2020 | +-------------+-------------+------------------------- -------+ 10 riviä sarjassa (0,00 s)>
Nyt aiomme löytää kurssille ilmoittautuneiden lukumäärän joka viikolta ja vuodelta.
SELECT YEARWEEK(Enroll_Date) YearandWeek, COUNT(Student_id) Student_Enrolled FROM Course GROUP BY YEARWEEK(Enroll_Date) ORDER BY YEARWEEK(Enroll_Date);>
Lähtö:
+-------------+------------------+ | 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).>