在Mysql服务器" YEAR" 数据类型范围 1000到9999 。如果我们将9999转换为二进制,则需要 2byte 那么mysql服务器如何能够将它存储在 1字节
中答案 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 强>