我创建了一个表“作曲家”VALUES(名称VARCHAR(30),出生年份(4),死亡年份(4),城市VARCHAR(30),国家VARCHAR(30))。然后我插入作曲家VALUES('BACH Johann Sebastian',1685,1750,'Eisenach','德国');.它返回2个错误。这些年不是在1901年到2155年之间。
有没有办法更改此默认值,以便我可以为这些列设置实际年份?似乎无法在网上找到任何东西。
我只使用INTEGER(4)作为那些列,但如果可能的话,我想使用YEAR(4)。
答案 0 :(得分:6)
很明显,这是此类型在docs中的唯一方式。
YEAR(4)
类型仅使用1个字节,并且限制为256年的范围。如果您的用例完全落在不同的256年空间内,您当然可以将它们存储一定量,并在写入之前和阅读之后调整自己,比如说-300。
或者,使用SMALLINT
或UNSIGNED SMALLINT
代替完整INT
来使用2个字节。不是'YEAR(4)'使用的1个字节,而是INT
答案 1 :(得分:1)
YEAR
数据类型仅支持该范围。如果要使用其他值,请使用标准INT
。
使用YEAR
类型的唯一优势是从2位数年份到4位数年份的半自动转换,但该效用充其量是可疑的。
答案 2 :(得分:0)
您可以使用整数来存储年数作为数字(您已经做过的事情),或者切换到更合理的数据库,例如PostgreSQL,它在过去或未来数百万年的存储日期方面没有任何问题。 / p>
答案 3 :(得分:0)
我担心你必须在这种情况下使用Int 根据这个 http://kimbriggs.com/computers/computer-notes/mysql-notes/mysql-data-types-50.file
年份类型的范围是1900 - 2155,不能更改:)