In MariaDB, YEAR()
è una funzione di data e ora incorporata che restituisce l'anno da una determinata espressione di data.
Accetta un argomento, che è la data da cui vuoi estrarre l'anno.
Restituisce l'anno come numero nell'intervallo 1000
a 9999
. Per zero date (ad es. 0000-00-00
), il risultato è 0
.
Sintassi
La sintassi è questa:
YEAR(date)
Dove date
è l'espressione della data da cui ottenere l'anno.
Esempio
Ecco un esempio:
SELECT YEAR('2030-08-01');
Risultato:
+--------------------+ | YEAR('2030-08-01') | +--------------------+ | 2030 | +--------------------+
Valori di data e ora
Funziona anche con i valori datetime:
SELECT YEAR('2030-08-01 10:30:45');
Risultato:
+-----------------------------+ | YEAR('2030-08-01 10:30:45') | +-----------------------------+ | 2030 | +-----------------------------+
Zero date
Le date zero danno come risultato 0
.
Esempio:
SELECT YEAR('0000-00-00');
Risultato:
+--------------------+ | YEAR('0000-00-00') | +--------------------+ | 0 | +--------------------+
Date numeriche
È anche possibile trasmettere le date come numero, purché abbia senso come data.
Esempio
SELECT YEAR(20301125);
Risultato:
+----------------+ | YEAR(20301125) | +----------------+ | 2030 | +----------------+
O anche il seguente (che utilizza un anno a due cifre):
SELECT YEAR(301125);
Risultato:
+--------------+ | YEAR(301125) | +--------------+ | 2030 | +--------------+
Ma deve avere un senso come appuntamento. Ecco cosa succede se aumento la parte del giorno a un giorno non valido:
SELECT YEAR(20301135);
Risultato:
+----------------+ | YEAR(20301135) | +----------------+ | NULL | +----------------+ 1 row in set, 1 warning (0.000 sec)
Possiamo controllare l'avviso in questo modo:
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
YEAR('2030/06/25'),
YEAR('2030,06,25'),
YEAR('2030:06:25'),
YEAR('2030;06!25');
Risultato (usando l'output verticale):
YEAR('2030/06/25'): 2030 YEAR('2030,06,25'): 2030 YEAR('2030:06:25'): 2030 YEAR('2030;06!25'): 2030
Data attuale
Possiamo passare NOW()
come argomento datetime per utilizzare la data corrente:
SELECT
NOW(),
YEAR(NOW());
Risultato:
+---------------------+-------------+ | NOW() | YEAR(NOW()) | +---------------------+-------------+ | 2021-05-18 08:55:02 | 2021 | +---------------------+-------------+
Argomenti non validi
Quando viene passato un argomento non valido, YEAR()
restituisce null
:
SELECT YEAR('2030-65-78');
Risultato:
+--------------------+ | YEAR('2030-65-78') | +--------------------+ | NULL | +--------------------+ 1 row in set, 1 warning (0.001 sec)
Controlla l'avviso:
SHOW WARNINGS;
Risultato:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2030-65-78' | +---------+------+----------------------------------------+
Argomento mancante
Chiamando YEAR()
con il numero errato di argomenti, o senza passare alcun argomento, genera un errore:
SELECT YEAR();
Risultato:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
E un altro esempio:
SELECT YEAR('2030-12-10', '2031-12-10');
Risultato:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' '2031-12-10')' at line 1