我在MySQL 4.0中有一个表,它当前有一个小整数(6)类型的year字段。如果我使用如下查询将其直接转换为Year类型,会发生什么情况:
ALTER TABLE t MODIFY y YEAR(4) NOT NULL DEFAULT CURRENT_TIMESTAMP;当列y的当前成员具有像2010这样的值时?我假设,因为从技术上讲,year类型是1-255之间的值,高于1-255的值将被截断或损坏。
因此,如果MySQL不够聪明,不能意识到2010(int) =110(年),那么转换这些值的最简单的查询是什么?
谢谢你的帮忙!
发布于 2010-04-15 05:33:53
来自MySQL Docs: 10.3.3 The year type
对于四位数格式,MySQL以
格式显示年份值,范围为1901到2155或0000。对于两位数格式,MySQL仅显示最后两位(最低有效位);例如,70 (1970或2070)或69 (2069)。
在这个范围之外的几年里:
非法年份值已转换为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 0000https://stackoverflow.com/questions/2641121
复制相似问题