ANNO SETTIMANALE () in MySQL viene utilizzata per trovare l'anno e la settimana per una determinata data. Se la data è NULL, la funzione YEARWEEK() restituirà NULL. Altrimenti, restituisce il valore dell'anno compreso tra 1000 e 9999 e il valore della settimana compreso tra 0 e 53.
Sintassi:
YEARWEEK(date, mode)>
Parametro: Questo metodo accetta due parametri come menzionato sopra e descritto di seguito:
- date : la data o datetime da cui vogliamo estrarre l'anno e la settimana. mode: specifica in quale giorno inizia la settimana. La tabella seguente descrive il funzionamento dell'argomento mode.
| Modalità | Primo giorno della settimana | Allineare | La settimana 1 è la prima settimana... |
|---|---|---|---|
| 0 | Domenica | 0-53 | con una domenica in quest'anno |
| 1 | Lunedi | 0-53 | con 4 o più giorni quest'anno |
| 2 | Domenica | 1-53 | con una domenica in quest'anno |
| 3 | Lunedi | 1-53 | con 4 o più giorni quest'anno |
| 4 | Domenica | 0-53 | con 4 o più giorni quest'anno |
| 5 | Lunedi | 0-53 | con un lunedì quest'anno |
| 6 | Domenica | 1-53 | con 4 o più giorni quest'anno |
| 7 | Lunedi | 1-53 | con un lunedì quest'anno |
Ritorna : Restituisce il valore dell'anno e della settimana insieme.
Esempio 1 : Trovare l'anno e la settimana correnti utilizzando la funzione Year() il 28/09/2020.
SELECT YEARWEEK(NOW()) AS Current_YearWeek;>
Produzione :
+------------------+ | Current_YearWeek | +------------------+ | 202039 | +------------------+ 1 row in set (0.00 sec)>
Quindi, l'anno corrente è il 2020 e il numero della settimana è 39.
Esempio-2: Trovare l'anno e la settimana da una determinata data utilizzando la funzione YEARWEEK().
SELECT YEARWEEK('2018-04-22 08:09:22') AS Year_Week ;> Produzione :
+-----------+ | Year_Week | +-----------+ | 201816 | +-----------+>
Quindi, in questo esempio l'anno è il 2018 e il numero della settimana è 16.
Esempio-3: Trovare l'anno e la settimana da un determinato datetime Utilizzando la funzione YEARWEEK() quando la data è NULL.
SELECT YEARWEEK(NULL) AS Year_Week ;>
Produzione :
+-----------+ | Year_Week | +-----------+ | NULL | +-----------+>
Esempio-4: In questo esempio troveremo il numero di studenti iscritti a un corso per ogni settimana dell'anno. Per dimostrare, creare una tabella denominata.
Corso :
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) );>
Ora inseriamo alcuni dati nella tabella Prodotto:
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' ) ;>
Quindi, la nostra tabella appare così:
mysql>selezionare * da Corso; +-------------+------------+-------+------ -------+ | Nome_corso | ID_studente | Nome_studente | Data_iscrizione | +-------------+------------+-------+------ -------+ | CS101 | 161011| Amit Singh | 26-11-2019 | | 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 Gandhi | 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 righe in serie (0,00 sec)>
Ora troveremo il numero di studenti iscritti al corso per ogni settimana e anno.
SELECT YEARWEEK(Enroll_Date) YearandWeek, COUNT(Student_id) Student_Enrolled FROM Course GROUP BY YEARWEEK(Enroll_Date) ORDER BY YEARWEEK(Enroll_Date);>
Produzione :
+-------------+------------------+ | 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).>