Тип данных YEAR
Синтаксис
YEAR[(4)]
Описание
Год в формате с двумя или четырьмя цифрами. По умолчанию используется формат с четырьмя цифрами. Обратите внимание, что формат с двумя цифрами устарел начиная с MariaDB 5.5.27.
В формате с четырьмя цифрами допустимые значения находятся в диапазоне от 1901 до 2155, а также 0000. В формате с двумя цифрами допустимые значения находятся в диапазоне от 70 до 69, что соответствует годам от 1970 до 2069. MariaDB отображает значения YEAR в формате YYYY, но позволяет назначать значения столбцам YEAR, используя либо строки, либо числа.
Вставка числового нуля имеет разный результат для YEAR(4) и YEAR(2). Для YEAR(2) значение 00 отражает год 2000. Для YEAR(4) значение 0000 отражает год ноль. Это относится только к числовому нулю. Строковый ноль всегда отражает год 2000.
Примеры
Прием строки или числа:
CREATE TABLE y(y YEAR);
INSERT INTO y VALUES (1990),('2012');
SELECT * FROM y;
+------+
| y |
+------+
| 1990 |
| 2012 |
+------+
При установленном strict_mode, который является значением по умолчанию с MariaDB 10.2.4:
Выход за пределы диапазона:
INSERT INTO y VALUES (1005),('3080');
ERROR 1264 (22003): Out of range value for column 'y' at row 1
INSERT INTO y VALUES ('2013-12-12');
ERROR 1265 (01000): Data truncated for column 'y' at row 1
SELECT * FROM y;
+------+
| y |
+------+
| 1990 |
| 2012 |
+------+
При отсутствующем strict_mode, который был значением по умолчанию до MariaDB 10.2.3:
Выход за пределы диапазона:
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 |
+------+
Округление:
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 |
+------+
Разница между YEAR(2) и YEAR(4), а также строковым и числовым нулем:
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 y2;
+---------+----------+
| YEAR(y) | YEAR(y2) |
+---------+----------+
| 0 | 2000 |
| 2000 | 2000 |
+---------+----------+
См. также
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/year-data-type/