YEARWEEK Funkcia () v MySQL sa používa na nájdenie roku a týždňa pre daný dátum. Ak je dátum NULL, funkcia YEARWEEK() vráti hodnotu NULL. V opačnom prípade vráti hodnotu roka v rozsahu od 1000 do 9999 a hodnotu týždňa v rozsahu 0 až 53.
Syntax:
YEARWEEK(date, mode)>
Parameter: Táto metóda akceptuje dva parametre, ako je uvedené vyššie a opísané nižšie:
- dátum : Dátum alebo dátum a čas, z ktorého chceme extrahovať rok a týždeň. režim : Určuje, ktorým dňom začína týždeň. Nasledujúca tabuľka popisuje, ako funguje argument režimu.
| Režim | Prvý deň týždňa | Rozsah | Prvý týždeň je prvý týždeň… |
|---|---|---|---|
| 0 | nedeľa | 0-53 | s nedeľou v tomto roku |
| 1 | pondelok | 0-53 | so 4 a viac dňami v tomto roku |
| 2 | nedeľa | 1-53 | s nedeľou v tomto roku |
| 3 | pondelok | 1-53 | so 4 a viac dňami v tomto roku |
| 4 | nedeľa | 0-53 | so 4 a viac dňami v tomto roku |
| 5 | pondelok | 0-53 | s pondelkom v tomto roku |
| 6 | nedeľa | 1-53 | so 4 a viac dňami v tomto roku |
| 7 | pondelok | 1-53 | s pondelkom v tomto roku |
Návraty: Vráti hodnotu roka a týždňa spolu.
Príklad-1: Nájdenie aktuálneho roka a týždňa pomocou funkcie Year() dňa 28.09.2020.
SELECT YEARWEEK(NOW()) AS Current_YearWeek;>
Výkon :
+------------------+ | Current_YearWeek | +------------------+ | 202039 | +------------------+ 1 row in set (0.00 sec)>
Aktuálny rok je 2020 a číslo týždňa je 39.
Príklad-2: Vyhľadanie roku a týždňa od daného dátumu a času pomocou funkcie YEARWEEK().
SELECT YEARWEEK('2018-04-22 08:09:22') AS Year_Week ;> Výkon :
+-----------+ | Year_Week | +-----------+ | 201816 | +-----------+>
Takže rok je 2018 a číslo týždňa je v tomto príklade 16.
Príklad-3: Vyhľadanie roka a týždňa z daného dátumu a času pomocou funkcie YEARWEEK() keď je dátum NULL.
SELECT YEARWEEK(NULL) AS Year_Week ;>
Výkon :
+-----------+ | Year_Week | +-----------+ | NULL | +-----------+>
Príklad-4: V tomto príklade zistíme počet študentov zapísaných do kurzu na každý týždeň v roku. Na ukážku vytvorte tabuľku s názvom.
kurz:
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) );>
Teraz vložte niektoré údaje do tabuľky produktov:
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' ) ;>
Naša tabuľka teda vyzerá takto:
mysql>vyberte * z Kurzu; +-------------+------------+----------------+------- -------+ | Názov_kurzu | Študent_id | Študent_meno | Dátum_registrácie | +-------------+------------+----------------+------ -------+ | 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 riadkov v súprave (0,00 s)>
Teraz zistíme počet študentov zapísaných do kurzu pre každý týždeň a rok.
SELECT YEARWEEK(Enroll_Date) YearandWeek, COUNT(Student_id) Student_Enrolled FROM Course GROUP BY YEARWEEK(Enroll_Date) ORDER BY YEARWEEK(Enroll_Date);>
Výkon :
+-------------+------------------+ | 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).>