Spec-Zone.ru › MariaDB

Тип данных 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 |
+---------+----------+

См. также

  • Функция YEAR()
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно компанией MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают позиции MariaDB или любой другой стороны.

© 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API