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'