MariaDB
 sql >> Database >  >> RDS >> MariaDB

5 funzioni per estrarre il numero della settimana da una data in MariaDB

Di seguito sono elencate 5 funzioni che consentono di restituire il numero della settimana da una data in MariaDB. Quattro restituiscono solo la settimana e uno restituisce sia la settimana che l'anno insieme.

La WEEK() Funzione

La WEEK() la funzione restituisce la settimana per una data data.

Esempio:

SELECT WEEK('2023-07-25');

Risultato:

+--------------------+
| WEEK('2023-07-25') |
+--------------------+
|                 30 |
+--------------------+

La WEEK() La funzione accetta un secondo argomento facoltativo per specificare la modalità. Il risultato effettivo che si ottiene da questa funzione dipenderà dalla modalità utilizzata. Se l'argomento mode viene omesso, il valore del default_week_format viene utilizzata la variabile di sistema.

Guarda come WEEK() Funziona in MariaDB per ulteriori informazioni sulle modalità e sugli esempi di ciascuno.

Il EXTRACT() Funzione

Il EXTRACT () la funzione consente di estrarre un'unità specificata dalla data. Pertanto, puoi usarlo per estrarre la settimana (così come altre unità) dalla data.

Esempio:

SELECT EXTRACT(WEEK FROM '2023-07-25');

Risultato:

+---------------------------------+
| EXTRACT(WEEK FROM '2023-07-25') |
+---------------------------------+
|                              30 |
+---------------------------------+

Il DATE_FORMAT() Funzione

Il DATE_FORMAT() La funzione consente di formattare una data in base a una stringa di formato. La stringa di formato specifica come deve essere formattata la data.

È quindi possibile utilizzare questa funzione per restituire la settimana (così come qualsiasi altra unità) dalla data. Esistono varie opzioni per restituire il numero della settimana, a seconda del giorno in cui inizia la settimana, ecc.

Ecco un esempio che restituisce la settimana in varie forme:

SELECT 
    DATE_FORMAT('2023-01-01', '%U') AS "%U",
    DATE_FORMAT('2023-01-01', '%u') AS "%u",
    DATE_FORMAT('2023-01-01', '%V') AS "%V",
    DATE_FORMAT('2023-01-01', '%v') AS "%v";

Risultato:

+------+------+------+------+
| %U   | %u   | %V   | %v   |
+------+------+------+------+
| 01   | 00   | 01   | 52   |
+------+------+------+------+

Ecco una descrizione di ciascuno di questi identificatori di formato:

Specificatore di formato Descrizione
%U Numero della settimana (00-53), quando il primo giorno della settimana è domenica.
%u Numero della settimana (00-53), quando il primo giorno della settimana è lunedì.
%V Numero della settimana (01-53), quando il primo giorno della settimana è la domenica. Usato con %X .
%v Numero della settimana (01-53), quando il primo giorno della settimana è lunedì. Usato con %x .

Ed ecco una descrizione di %X e %x come indicato nella tabella sopra:

Specificatore di formato Descrizione
%X Anno con 4 cifre quando il primo giorno della settimana è domenica. Usato con %V .
%x Anno con 4 cifre quando il primo giorno della settimana è lunedì. Usato con %v .

Possiamo combinare gli specificatori di formato per restituire insieme l'anno e la settimana, se necessario:

SELECT 
    DATE_FORMAT('2023-01-01', '%X, %V') AS "%X, %V",
    DATE_FORMAT('2023-01-01', '%x, %v') AS "%x, %v";

Risultato:

+----------+----------+
| %X, %V   | %x, %v   |
+----------+----------+
| 2023, 01 | 2022, 52 |
+----------+----------+

Nota che il numero della settimana non rifletterà sempre gli esempi sopra, dipende dalla data effettiva utilizzata.

Anticipiamo la data di un anno:

SELECT 
    DATE_FORMAT('2024-01-01', '%U') AS "%U",
    DATE_FORMAT('2024-01-01', '%u') AS "%u",
    DATE_FORMAT('2024-01-01', '%V') AS "%V",
    DATE_FORMAT('2024-01-01', '%v') AS "%v";

Risultato:

+------+------+------+------+
| %U   | %u   | %V   | %v   |
+------+------+------+------+
| 00   | 01   | 53   | 01   |
+------+------+------+------+

Questa volta otteniamo un diverso insieme di risultati.

Ecco cosa succede quando andiamo avanti nell'anno:

SELECT 
    DATE_FORMAT('2024-12-12', '%U') AS "%U",
    DATE_FORMAT('2024-12-12', '%u') AS "%u",
    DATE_FORMAT('2024-12-12', '%V') AS "%V",
    DATE_FORMAT('2024-12-12', '%v') AS "%v";

Risultato:

+------+------+------+------+
| %U   | %u   | %V   | %v   |
+------+------+------+------+
| 49   | 50   | 49   | 50   |
+------+------+------+------+

Come puoi vedere, restituire il numero della settimana non è sempre così chiaro come potremmo desiderare.

Consulta le stringhe di formato MariaDB per un elenco completo di stringhe di formato/specificatori che possono essere utilizzati con DATE_FORMAT() .

Il YEARWEEK() Funzione

È possibile ottenere la settimana e anno in una volta. Il YEARWEEK() la funzione restituisce l'anno e la settimana per una data data.

Esempio:

SELECT YEARWEEK('2023-01-01');

Risultato:

+------------------------+
| YEARWEEK('2023-01-01') |
+------------------------+
|                 202301 |
+------------------------+

L'anno nel risultato potrebbe essere diverso dall'anno nell'argomento data per la prima e l'ultima settimana dell'anno.

Ecco cosa succede se andiamo avanti di un anno:

SELECT YEARWEEK('2024-01-01');

Risultato:

+------------------------+
| YEARWEEK('2024-01-01') |
+------------------------+
|                 202353 |
+------------------------+

Come con la WEEK() funzione, il YEARWEEK() La funzione accetta un secondo argomento facoltativo per specificare la modalità. Il risultato effettivo che si ottiene da questa funzione dipenderà dalla modalità utilizzata. Se l'argomento mode viene omesso, il valore del default_week_format viene utilizzata la variabile di sistema.

Guarda come YEARWEEK() Funziona in MariaDB per ulteriori informazioni sulle modalità e sugli esempi di ciascuno.