8

我创建了一个表“作曲家”值(名称 VARCHAR(30),出生年份(4),死亡年份(4),城市 VARCHAR(30),国家 VARCHAR(30))。然后我插入作曲家的价值('BACH Johann Sebastian',1685,1750,'Eisenach','Germany');。它返回 2 个错误。年份不在 1901 年到 2155 年之间。

有什么方法可以更改此默认值,以便我可以为这些列设置实际年份?似乎无法在网上找到任何东西。

我只对这些列使用 INTEGER(4),但如果可能的话,我想使用 YEAR(4)。

4

4 回答 4

8

似乎很清楚,这是这种类型在docs中起作用的唯一方式。

YEAR(4)类型仅使用 1 个字节,并且限制在 256 年的范围内。如果您的用例完全落在不同的 256 年空间内,您当然可以将它们存储一定数量,并在写作之前和阅读之后调整自己,比如 -300。

或者,使用 a SMALLINTorUNSIGNED SMALLINT代替 fullINT以使用 2 个字节。不完全是 'YEAR(4)' 使用的 1 个字节,但少于一个 'YEAR(4)' 使用的 4 个字节INT

于 2012-11-16T06:35:10.270 回答
1

YEAR数据类型仅支持该范围。如果要使用其他值,请使用标准INT.

使用该YEAR类型的唯一优势是从 2 位数年份到 4 位数等值的半自动转换,但这种实用性充其量是值得怀疑的。

于 2012-11-16T06:33:06.100 回答
0

您可以使用整数将年份存储为数字(您已经做过),或者切换到更明智的数据库,如 PostgreSQL,它在存储数百万年的过去或未来的日期方面没有任何问题。

于 2012-11-16T06:34:46.173 回答
0

恐怕你必须在这种情况下使用 Int 根据这个 http://kimbriggs.com/computers/computer-notes/mysql-notes/mysql-data-types-50.file

年份类型的范围是 1900 - 2155,不能更改 :)

于 2012-11-16T06:39:23.203 回答