logo

Funkce YEARWEEK() v MySQL

YEARWEEK Funkce () v MySQL slouží k vyhledání roku a týdne pro dané datum. Pokud je datum NULL, funkce YEARWEEK() vrátí hodnotu NULL. V opačném případě vrátí hodnotu roku v rozsahu od 1000 do 9999 a hodnotu týdne v rozsahu 0 až 53.

Syntaxe:



 YEARWEEK(date, mode)>

Parametr : Tato metoda přijímá dva parametry, jak je uvedeno výše a popsáno níže:

    datum : Datum nebo datum a čas, ze kterého chceme extrahovat rok a týden. režim : Určuje, kterým dnem týden začíná. Následující tabulka popisuje, jak argument mode funguje.
Režim První den v týdnu Rozsah Týden 1 je první týden…
0 Neděle 0-53 s nedělí v tomto roce
1 pondělí 0-53 se 4 a více dny v tomto roce
2 Neděle 1-53 s nedělí v tomto roce
3 pondělí 1-53 se 4 a více dny v tomto roce
4 Neděle 0-53 se 4 a více dny v tomto roce
5 pondělí 0-53 s pondělím v tomto roce
6 Neděle 1-53 se 4 a více dny v tomto roce
7 pondělí 1-53 s pondělím v tomto roce

Vrátí: Vrací hodnotu roku a týdne dohromady.

Příklad-1: Vyhledání aktuálního roku a týdne pomocí funkce Year() dne 28. 9. 2020.



 SELECT YEARWEEK(NOW()) AS Current_YearWeek;>

Výstup :

 +------------------+ | Current_YearWeek | +------------------+ | 202039 | +------------------+ 1 row in set (0.00 sec)>

Aktuální rok je 2020 a číslo týdne je 39.

Příklad-2: Vyhledání roku a týdne z daného datetime pomocí funkce YEARWEEK().



 SELECT YEARWEEK('2018-04-22 08:09:22') AS Year_Week ;>

Výstup :

 +-----------+ | Year_Week | +-----------+ | 201816 | +-----------+>

Takže rok je 2018 a číslo týdne je v tomto příkladu 16.

Příklad-3: Vyhledání roku a týdne z daného datetime pomocí funkce YEARWEEK(), když je datum NULL.

 SELECT YEARWEEK(NULL) AS Year_Week ;>

Výstup :

 +-----------+ | Year_Week | +-----------+ | NULL | +-----------+>

Příklad-4: V tomto příkladu zjistíme počet studentů zapsaných do kurzu pro každý týden v roce. Pro ukázku vytvořte tabulku s názvem.

Chod :

 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) );>

Nyní vložte některá data do tabulky Produkt:

 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' ) ;>

Takže naše tabulka vypadá takto:

 mysql>vyberte * z Kurzu; +-------------+------------+----------------+------ -------+ | Název_kurzu | Student_id | Jméno_studenta | Datum_registrace | +-------------+------------+----------------+------ -------+ | 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 řádků v sadě (0,00 s)>

Nyní zjistíme počet studentů zapsaných do kurzu pro každý týden 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ýstup :

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