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