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

Come funziona WEEKOFYEAR() in MariaDB

In MariaDB, WEEKOFYEAR() è una funzione di data e ora incorporata che restituisce la settimana di calendario di una data data come numero nell'intervallo da 1 a 53 .

È l'equivalente dell'utilizzo di WEEK() funzione in modalità 3, quindi il suo risultato è conforme alla norma ISO 8601:1988.

Accetta un argomento; la data da cui vuoi estrarre la settimana.

Sintassi

La sintassi è questa:

WEEKOFYEAR(date)

Dove date è l'espressione di data da cui ottenere la settimana di calendario.

Esempio

Ecco un esempio:

SELECT WEEKOFYEAR('2030-01-01');

Risultato:

+--------------------------+
| WEEKOFYEAR('2030-01-01') |
+--------------------------+
|                        1 |
+--------------------------+

È l'equivalente di fare quanto segue:

SELECT WEEK('2030-01-01', 3);

Risultato:

+-----------------------+
| WEEK('2030-01-01', 3) |
+-----------------------+
|                     1 |
+-----------------------+

Valori di data e ora

Il WEEKOFYEAR() la funzione funziona anche con i valori datetime:

SELECT WEEKOFYEAR('2030-08-01 10:30:45');

Risultato:

+-----------------------------------+
| WEEKOFYEAR('2030-08-01 10:30:45') |
+-----------------------------------+
|                                31 |
+-----------------------------------+

Date numeriche

È anche possibile trasmettere le date come numero, purché abbia senso come data.

Esempio

SELECT WEEKOFYEAR(20301125);

Risultato:

+----------------------+
| WEEKOFYEAR(20301125) |
+----------------------+
|                   48 |
+----------------------+

O anche il seguente (che utilizza un anno a due cifre):

SELECT WEEKOFYEAR(301125);

Risultato:

+--------------------+
| WEEKOFYEAR(301125) |
+--------------------+
|                 48 |
+--------------------+

Ma deve avere un senso come appuntamento. Ecco cosa succede se aumento la parte del giorno a un giorno non valido:

SELECT WEEKOFYEAR(20301135);

Risultato:

+----------------------+
| WEEKOFYEAR(20301135) |
+----------------------+
|                 NULL |
+----------------------+
1 row in set, 1 warning (0.000 sec)

Ha restituito null con un avvertimento.

Diamo un'occhiata all'avviso:

SHOW WARNINGS;

Risultato:

+---------+------+--------------------------------------+
| Level   | Code | Message                              |
+---------+------+--------------------------------------+
| Warning | 1292 | Incorrect datetime value: '20301135' |
+---------+------+--------------------------------------+

Altri delimitatori

È possibile utilizzare altri delimitatori per la data. MariaDB è abbastanza clemente quando si tratta di delimitatori sulle date. Ecco alcuni validi esempi:

SELECT 
    WEEKOFYEAR('2030/06/25'),
    WEEKOFYEAR('2030,06,25'),
    WEEKOFYEAR('2030:06:25'),
    WEEKOFYEAR('2030;06!25');

Risultato (usando l'output verticale):

WEEKOFYEAR('2030/06/25'): 26
WEEKOFYEAR('2030,06,25'): 26
WEEKOFYEAR('2030:06:25'): 26
WEEKOFYEAR('2030;06!25'): 26

Data attuale

Possiamo passare NOW() come argomento datetime per utilizzare la data corrente:

SELECT 
    NOW(),
    WEEKOFYEAR(NOW());

Risultato:

+---------------------+-------------------+
| NOW()               | WEEKOFYEAR(NOW()) |
+---------------------+-------------------+
| 2021-05-17 09:42:13 |                20 |
+---------------------+-------------------+

Argomenti non validi

Quando viene passato un argomento non valido, WEEKOFYEAR() restituisce null :

SELECT WEEKOFYEAR('2030-65-78');

Risultato:

+--------------------------+
| WEEKOFYEAR('2030-65-78') |
+--------------------------+
|                     NULL |
+--------------------------+
1 row in set, 1 warning (0.000 sec)

Mostriamo l'avviso:

SHOW WARNINGS;

Risultato:

+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1292 | Incorrect datetime value: '2030-65-78' |
+---------+------+----------------------------------------+

Argomento mancante

Chiamando WEEKOFYEAR() con il numero errato di argomenti, o senza passare alcun argomento, si verifica un errore:

SELECT WEEKOFYEAR();

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'WEEKOFYEAR'

E un altro esempio:

SELECT WEEKOFYEAR('2030-12-10', 1);

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'WEEKOFYEAR'