Il tipo YEAR
Sintassi
YEAR[(4)]
Spiegazione
Un anno, nel formato a due o a quattro cifre. Il formato predefinito è a quattro cifre. Si noti che il formato a due cifre è deprecato dalla versione 5.5.27.
Nel formato a quattro cifre, i valori ammessi vanno da 1901 a 2155, più 0000. Nel formato a due cifre, i valori ammessi vanno da 70 a 69, e rappresentano gli anni dal 1970 al 2069. MariaDB mostra i valori YEAR nel formato YYYY, ma permette di assegnare i valori alle colonne YEAR utilizzando sia stringhe sia numeri.
Inserire uno zero numerico ha effetti diversi su YEAR(4) e YEAR(2). Per YEAR(2), il valore 00
rappresenta l'anno 2000. Per YEAR(4), il valore 0000
rappresenta l'anno zero. Questo si applica solo allo zero numerico. La stringa zero riflette sempre l'anno 2000.
Esempi
Usare una stringa o un numero:
CREATE TABLE y(y YEAR); INSERT INTO y VALUES (1990),('2012'); SELECT * FROM y; +------+ | y | +------+ | 1990 | | 2012 | +------+
Out of range:
INSERT INTO y VALUES (1005),('3080'); Query OK, 2 rows affected, 2 warnings (0.05 sec) Records: 2 Duplicates: 0 Warnings: 2 SHOW WARNINGS; +---------+------+--------------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------------+ | Warning | 1264 | Out of range value for column 'y' at row 1 | | Warning | 1264 | Out of range value for column 'y' at row 2 | +---------+------+--------------------------------------------+ SELECT * FROM y; +------+ | y | +------+ | 1990 | | 2012 | | 0000 | | 0000 | +------+
Troncamento:
INSERT INTO y VALUES ('2013-12-12'); Query OK, 1 row affected, 1 warning (0.05 sec) SHOW WARNINGS; +---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1265 | Data truncated for column 'y' at row 1 | +---------+------+----------------------------------------+ SELECT * FROM y; +------+ | y | +------+ | 1990 | | 2012 | | 0000 | | 0000 | | 2013 | +------+
Differenza tra YEAR(2) e YEAR(4), e zero numerico o stringa:
CREATE TABLE y2(y YEAR(4), y2 YEAR(2)); Query OK, 0 rows affected, 1 warning (0.40 sec) Note (Code 1287): 'YEAR(2)' is deprecated and will be removed in a future release. Please use YEAR(4) instead INSERT INTO y2 VALUES(0,0),('0','0'); SELECT YEAR(y),YEAR(y2) FROM y; +---------+----------+ | YEAR(y) | YEAR(y2) | +---------+----------+ | 0 | 2000 | | 2000 | 2000 | +---------+----------+