2014-04-15 50 views

回答

7

初始斷言是不正確的。

YEAR type只有支持從1901年到21515年的年份。 (在comparisson中,DATE and DATETIME types支持年的範圍內從1000..9999)

在範圍[可以指定YEAR值] 1901至2155

只需要一個字節在此範圍內存儲不同的整數(2155-1901 + 1 = 255)。全年限於1901年至21515年,通過使用從1900年開始的隱含偏移量來計算:year = 1900 + stored_year_byte

MySQL還支持「無效年份」標記值(0),顯示爲「0000」,這就是爲什麼不允許1900年。


2

YEAR類型是用於表示年份值的1-byte類型。它可以聲明爲YEAR(2)或YEAR(4)來指定顯示寬度爲兩個或四個字符。如果未給出寬度,則默認值爲四個字符

YEAR(4) and YEAR(2)具有不同的顯示格式,但具有相同的值範圍。

對於4-digit format,MySQL的顯示YEAR值在YYYY格式,到2155的範圍內的1901,或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