我在MySQL 4.0中有一个表,它目前有一个yearint字段作为smallint(6)类型。如果我将它直接转换为具有如下查询的Year类型会发生什么:
ALTER TABLE t MODIFY y YEAR(4) NOT NULL DEFAULT CURRENT_TIMESTAMP;
当y列的当前成员具有类似2010的值时?我假设因为年份类型在技术上是1-255的值,高于该值的值将被截断或破坏。
因此,如果MySQL不够智能,无法实现2010(int)= 110(年),那么转换值的最简单的查询或查询是什么?
感谢您的帮助!
答案 0 :(得分:2)
来自MySQL Docs: 10.3.3 The year
type
对于四位数格式,MySQL以YYYY格式显示YEAR值,范围为1901到2155或0000.对于两位数格式,MySQL仅显示最后两个(最低有效)数字;例如,70(1970或2070)或69(2069)。
超出该范围的年份:
非法YEAR值将转换为0000。
alter table foo add b year(4) not null default current_timestamp;
update foo set b=a;
a b
1900 0000
1901 1901
1950 1950
2000 2000
2002 2002
2121 2121
2155 2155
2156 0000