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

Come funziona YEAR() in MariaDB

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