Documentation Home

11.2.4 YEAR 类型

YEAR类型是用于表示年份值的 1 字节类型。它可以声明为 YEAR具有 4 个字符的隐式显示宽度,或者声明为YEAR(4)YEAR(2)具有 4 个或 2 个字符的显式显示宽度。

笔记

2 位YEAR(2)数据类型有一些您在选择使用它之前应该考虑的问题。从 MySQL 5.6.6 开始,YEAR(2)已弃用:YEAR(2)现有表中的 2 位数列与以前一样处理,但YEAR(2) 新表或更改表中的 2 位数列将转换为 4 位数 YEAR列。有关详细信息,请参阅 第 11.2.5 节,“2 位 YEAR(2) 限制和迁移到 4 位 YEAR”

YEAR/YEAR(4)YEAR(2)显示格式不同,但具有相同的值范围。对于 4 位格式,MySQL YEAR以格式显示值, YYYY范围为 190121550000。对于 2 位格式,MySQL 只显示最后(最低位)2 位;例如, 70(1970 或 2070)或69 (2069)。

YEAR接受多种格式的输入值:

  • 作为 4 位字符串,范围'1901''2155'.

  • 1901作为范围内的 4 位数字2155

  • 作为 1 或 2 位数字字符串,范围'0''99'. MySQL 将范围内的值转换为to和 to到 范围'0'to'69''70'to中的值 。 '99'YEAR2000206919701999

  • 0 作为范围内 的 1 位或 2 位数字99。MySQL 将范围内的值转换为to和 to到 范围1to6970to中的值 。 99YEAR2001206919701999

    插入数字对/和 0有不同的影响 : YEARYEAR(4)YEAR(2)

    • 对于YEAR/ YEAR(4),结果的显示值为 , 0000内部值为 0000。要指定零并将其解释为2000,请将其指定为字符串'0''00'

    • 对于YEAR(2),结果的显示值为 ,00内部值为 2000

  • 作为返回上下文可接受的值的函数的结果YEAR,例如 NOW().

如果未启用严格 SQL 模式,MySQL 会将无效 YEAR值转换为0000. 在严格 SQL 模式下,尝试插入无效 YEAR值会产生错误。

另见第 11.2.9 节,“日期中的两位数年份”