Что произойдет, если я изменю тип столбца с int на год? - PullRequest
0 голосов
/ 15 апреля 2010

У меня есть таблица в MySQL 4.0, которая в настоящее время имеет годовое поле типа smallint (6). Что произойдет, если я преобразую его непосредственно в тип Year с помощью запроса, подобного следующему:

ALTER TABLE t MODIFY y YEAR(4) NOT NULL DEFAULT CURRENT_TIMESTAMP;

Когда текущие члены столбца y имеют значения, такие как 2010? Я предполагаю, что поскольку тип года технически равен 1-255, значения выше этого значения будут усечены или разбиты.

Так что, если MySQL не достаточно умен, чтобы понять, что 2010 (int) = 110 (year), какой будет самый простой запрос или запросы для преобразования значений?

Спасибо за вашу помощь!

1 Ответ

2 голосов
/ 15 апреля 2010

С MySQL Docs: 10.3.3 Тип year

Для четырехзначного формата MySQL отображает значения YEAR в формате YYYY с диапазоном от 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    0000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...