MySQL 中的 YEAR(2) 和 YEAR(4) 有什么区别?
mysqlmysqli database
YEAR(2) 以 2 位数字格式存储年份。例如,我们可以写入 69 来存储 1969 年。在 YEAR (2) 中,可以指定从 1970 到 2069(70 到 69)的年份。
YEAR(4) 以 4 位数字格式存储年份。例如,我们需要写入 19669 来将 1969 存储为年份。在 YEAR (4) 中,年份可以指定为 1901 至 2155。
MySQL 借助以下规则解释 2 位年份值:
- 00-69 范围内的年份值将转换为 2000-2069。
- 70-99 范围内的年份值将转换为 1970-1999。
我们不能将日期值存储为 2 位格式,因为以这种格式存储的值会变得模糊,因为世纪未知。
借助以下 MySQL 示例可以更清楚地理解 −
mysql> Create Table year_test(val year(2)); Query OK, 0 rows affected, 1 warning (0.23 sec) mysql> insert into year_test(val) values('70'); Query OK, 1 row affected (0.14 sec) mysql> insert into year_test(val) values('00'); Query OK, 1 row affected (0.06 sec) mysql> select * from year_test; +------+ | val | +------+ | 70 | | 00 | +------+ 2 rows in set (0.00 sec) mysql> select * from year_test where val = '1970'; +------+ | val | +------+ | 70 | +------+ 1 row in set (0.03 sec) mysql> select * from year_test where val = '2000'; +------+ | val | +------+ | 00 | +------+ 1 row in set (0.00 sec) mysql> select * from year_test where val = '1900'; Empty set (0.06 sec)
通过将 00 存储到 ‘val’,我们无法确定我们指的是 ‘1900’ 还是 ‘2000’ 哪一年。MySQL 将其解释为 2000 年。