MySQL YEAR 数据类型使用指南

在本教程中,我们将向您介绍 MySQL YEAR 数据类型,以及 YEAR 数据类型的使用规则。

在 MySQL 中, YEAR 数据类型用来存储年份值。

YEAR 数据类型占用 1 个字节,YEAR 值的范围为从 19012155, 还有 0000

定义为 YEAR 数据类型的列可以接受多种输入格式,包括:

  • 4 位数字的年份值,从 1901 to 2155
  • 4 位数字的年份值的字符串形式,从 '1901''2155'
  • 2 位数字的年份值,从 099,并按如下规则转换为 4 位数年份:
    • 169 转换为 20012069
    • 7099 转换为 19701999
    • 0 转换为 0000
  • 2 位数字的年份值的字符串形式,从 '0''99',并按如下规则转换为 4 位数年份:
    • '0''69' 转换为 20002069
    • '70''99' 转换为 19701999

若未启用严格 SQL 模式,MySQL 会将无效的 YEAR 值转为 0000。在严格 SQL 模式下,插入无效的 YEAR 值时会产生错误。

MySQL YEAR 语法

这是 YEAR 数据类型的语法:

column_name YEAR

在 MySQL 8.0.19 之前的版本中,YEAR 可以使用显示宽度属性,如: YEAR(2)。不过,现在显示宽度属性已经不再被推荐使用。并且 MySQL 8 以后也不支持 YEAR(2) 了。请直接使用 YEAR

MySQL YEAR 实例

让我通过一个实例看一下 YEAR 的用法。

首先,让我们创建表 test_year, 它有包含一个 YEAR 类型的列 created_year

CREATE TABLE test_year(
    id INT AUTO_INCREMENT PRIMARY KEY,
    created_year YEAR NOT NULL
);

接着,让我们使用 4 位数年份插入一行

INSERT INTO test_year (created_year)
VALUES (2022);

然后,让我们使用 2 位数年份插入 2 行:

INSERT INTO test_year (created_year)
VALUES (10), (98);

让我们再插入一个 0 值:

INSERT INTO test_year (created_year)
VALUES (0), ('0');

最后,让我们通过查询表中的数据,验证一下是否插入正确:

SELECT * FROM test_year;
+----+--------------+
| id | created_year |
+----+--------------+
|  1 |         2022 |
|  2 |         2010 |
|  3 |         1998 |
|  4 |         0000 |
|  5 |         2000 |
+----+--------------+

这里,我们可以看出,数字 0 转换为了 0000,而字符串 '0' 转换为了 2000

结论

在本教程中,我们向您介绍了 MySQL YEAR 数据类型,以及 YEAR 数据类型的使用规则。

  • YEAR 可接受 4 位年份值和 2 位年份值。
  • 2 位数字年份 169 转换为 20012069
  • 2 位数字年份 7099 转换为 19701999
  • 数字 0 转换为 0000
  • 字符串 '0' 转换为 2000