“YEAR”数据类型在mysql服务器中只占用1个字节

时间:2014-04-15 04:59:07

标签: mysql

在Mysql服务器" YEAR" 数据类型范围 1000到9999 。如果我们将9999转换为二进制,则需要 2byte 那么mysql服务器如何能够将它存储在 1字节

2 个答案:

答案 0 :(得分:7)

初始断言不正确。

YEAR type 支持1901年至2155年的年份。 (在比较中,DATE and DATETIME types支持从1000 ...9999开始的年份范围。)

  

[可以指定YEAR值],范围为1901到2155.

在此范围内只需要一个字节来存储不同的整数(2155-1901 + 1 = 255)。全年,限制为1901..2155,使用1900年的隐式偏移量计算:year = 1900 + stored_year_byte

MySQL还支持“无效年份”标记值(0),显示为“0000”,这就是为什么不允许1900年。


答案 1 :(得分:2)

YEAR类型是1-byte类型,用于表示年份值。它可以声明为YEAR(2)或YEAR(4)以指定两个或四个字符的显示宽度。如果没有给出宽度,则默认为四个字符

YEAR(4) and YEAR(2)具有不同的显示格式,但具有相同的值范围。

对于4-digit format,MySQL以YYYY格式显示YEAR值,范围为1901到2155或0000.

对于2-digit format,MySQL仅显示最后两个(最不重要)数字;例如,70(1970或2070)或69(2069)。

您可以指定各种格式的YEAR值:

String length           |Range
4-digit string          | '1901' to '2155'.
4-digit number          |1901 to 2155.
1- or 2-digit string    |'0' to '99'. Values in the ranges '0' to '69' and '70' to '99' are converted to YEAR values in the ranges 2000 to 2069 and 1970 to 1999.
1- or 2-digit number    |1 to 99. Values in the ranges 1 to 69 and 70 to 99 are converted to YEAR values in the ranges 2001 to 2069 and 1970 to 1999.

<强> http://dev.mysql.com/doc/refman/5.0/en/year.html

<强> http://docs.oracle.com/cd/E19078-01/mysql/mysql-refman-5.0/data-types.html#year