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 |
+---------+----------+

Commenti

Sto caricando i commenti......