MySQL YEAR 数据类型介绍

MySQL 的 YEAR 数据类型用于存储年份值。 YEAR 数据类型仅占用 1 个字节的存储空间,可以存储从 1901 到 2155 年之间的值。 YEAR 数据类型支持零填充,可以设置显示的位数。

语法

YEAR 数据类型的语法如下:

YEAR[(4)]

其中,4 表示 YEAR 数据类型需要显示的位数。如果不指定位数,则 YEAR 数据类型默认为 4 位。

使用场景

YEAR 数据类型主要用于存储年份值,特别是在需要限制年份范围的情况下非常有用。 YEAR 数据类型还可以用于存储与年份相关的数据,如年龄和年份差等。通常情况下,YEAR 数据类型会和其他数据类型一起使用,例如 DATETIMESTAMP 数据类型,以便在需要计算年份差时进行计算。

示例

下面是两个示例,演示了如何使用 YEAR 数据类型:

示例 1:存储年份值

假设我们有一个名为 users 的表,其中包含 idbirth_year 两列,我们可以使用以下命令创建该表:

CREATE TABLE users (
  id INT PRIMARY KEY,
  birth_year YEAR(4)
);

现在,我们可以向 users 表中插入数据:

INSERT INTO users (id, birth_year)
VALUES
  (1, 1990),
  (2, 1985),
  (3, 2000);

然后,我们可以使用以下命令查询 users 表:

SELECT id, birth_year FROM users;

输出结果如下:

+----+------------+
| id | birth_year |
+----+------------+
|  1 |       1990 |
|  2 |       1985 |
|  3 |       2000 |
+----+------------+

示例 2:计算年份差

假设我们有一个名为 employees 的表,其中包含 idnamehire_date 三列,hire_date 列存储员工的入职日期,我们可以使用以下命令创建该表:

CREATE TABLE employees (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  hire_date DATE
);

现在,我们可以向 employees 表中插入数据:

INSERT INTO employees (id, name, hire_date)
VALUES
  (1, 'John', '2015-01-01'),
  (2, 'Mary', '2018-03-15'),
  (3, 'Peter', '2020-05-10');

然后,我们可以使用以下命令计算每个员工的年份差:

SELECT name, YEAR(CURDATE()) - YEAR(hire_date) AS years_of_service
FROM employees;

输出结果如下:

+-------+------------------+
| name  | years_of_service |
+-------+------------------+
| John  |                7 |
| Mary  |                4 |
| Peter |                2 |
+-------+------------------+

结论

YEAR 数据类型是一种用于存储年份值的数据类型。它可以存储从 1901 年到 2155 年之间的任何年份值,并且只占用 1 个字节的存储空间。它通常用于存储日期中的年份信息,但不包括月份和日期。由于 YEAR 数据类型只存储年份,因此它比 DATETIMETIMESTAMP 数据类型更节省存储空间。但是,需要注意的是,YEAR 数据类型不能存储任何时间或日期信息,因此它不能用于存储完整的日期或时间戳信息。

在实际的数据库应用中,YEAR 数据类型通常用于存储年份信息,例如员工入职年份、公司成立年份等。使用 YEAR 数据类型可以帮助节省存储空间,并且在执行一些年份计算时也更方便。