# rename the old TIMESTAMP field
ALTER TABLE `myTable` CHANGE `myTimestamp` `temp_myTimestamp` int(11) NOT NULL;
# create a new DATETIME column of the same name as your old column
ALTER TABLE `myTable` ADD `myTimestamp` DATETIME NOT NULL;
# update all rows by populating your new DATETIME field
UPDATE `myTable` SET `myTimestamp` = FROM_UNIXTIME(temp_myTimestamp);
# remove the temporary column
ALTER TABLE `myTable` DROP `temp_myTimestamp`
这个问题会影响所有将系统时间存储为有符号32位整数的软件和系统,并将这个数字解释为自1970年1月1日00:00:00 UTC 以来的秒数。这样表示的最新时间是世界协调时2038年1月19日(星期二)03:14:07。超过这一时刻的时间将会“环绕”并在内部以负数形式存储,这些系统将把负数解释为1901年的日期而不是2038年的日期