该YEAR类型是1字节类型,用于表示年份值。可以将其声明为 YEAR具有4个字符的隐式显示宽度,或等效于YEAR(4)显式显示宽度。
注意:
从MySQL 8.0.19开始,不建议YEAR(4) 使用具有显式显示宽度的数据类型,并且您应该期望在将来的MySQL版本中删除对它的支持。而是使用YEAR 不具有相同含义的显示宽度。
MySQL 8.0不支持YEAR(2)旧版本MySQL中允许的两位数 数据类型。有关转换为4位的指令YEAR,请参见 两位数年份(2)的限制和迁移到4位数年份,在 MySQL的5.7参考手册。
MySQLYEAR
以格式显示值 YYYY
,范围为 1901
to2155
和 0000
。
YEAR
接受多种格式的输入值:
-
作为 4 位数字的字符串,范围
'1901'
为'2155'
. -
作为 4 位数字,范围
1901
为2155
. -
作为 1 或 2 位数范围内的
'0'
字符串'99'
。MySQL 将'0'
to'69'
和'70'
to'99
范围内的值转换为2000to2069 和 1970to 1999范围内YEAR
的值 。 -
作为 1 或 2 位数范围内的
0
数字99
。MySQL 将‘1’to‘69’
和 ‘70’到‘99’
范围内的值转换为2001to2069 和 1979to1999 范围内YEAR
的值 。插入数字的结果的
0
显示值为0000
,内部值为0000
。要插入零并将其解释为2000
,请将其指定为字符串'0'
或'00'
。 -
作为返回上下文中可接受的值的函数的结果
YEAR
,例如 NOW().
如果未启用严格 SQL 模式,MySQL 会将无效 YEAR
值转换为0000
. 在严格 SQL 模式下,尝试插入无效 YEAR
值会产生错误。
-- 年份类型:year,默认四位
CREATE TABLE test_year (a YEAR)-- 查询表结构
DESC test_year-- 作为 4 位数字的字符串,范围'1901'为 '2155'.
-- 作为 4 位数字,范围1901为 2155.
INSERT INTO test_year VALUES (1991)
INSERT INTO test_year VALUES ('2155')-- 作为 1 或 2 位数范围内的0 数字99。
-- MySQL 将‘1’to‘69’和 ‘70’到‘99’范围内的值转换为2001to2069 和 1979to1999 范围内YEAR的值 。
INSERT INTO test_year VALUES (1)
INSERT INTO test_year VALUES ('70')-- 插入数字的结果的0显示值为0000,内部值为0000。
-- 要插入零并将其解释为2000,请将其指定为字符串'0'或'00'。
INSERT INTO test_year VALUES (0)
INSERT INTO test_year VALUES ('0')-- 查询所有数据
SELECT * FROM test_year-- 删除检索数据
DELETE FROM test_year WHERE a = 0