相同点:
可自动更新和初始化,默认显示格式相同YYYY-MM-dd HH:mm:ss
不同点:
1. timestamp的时间范围是:'1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC ,自动时区转化,实际存储毫秒数,4字节存储
2. datetime的时间范围:'1000-01-01 00:00:00' to '9999-12-31 23:59:59' ,不支持时区,8字节存储
如果不需要考虑时区问题,直接用 datatime类型替换 timestamp,替换的思路:
1. 修改原来字段的名字;
ALTER TABLE `student` CHANGE `create_time` `temp_create_time` timestamp NOT NULL default '0000-00-00 00:00:00';
2. 新建一个 datatime类型的字段(新建一列,用来替换原来的);
ALTER TABLE `student` ADD `create_time` DATETIME NOT NULL default '0000-00-00 00:00:00';
3. 将原来字段列的数据拷贝到新的字段列中;
UPDATE `student` SET `create_time` = `temp_create_time`;
4. 删除原来的列;
ALTER TABLE `student` DROP `temp_create_time`;
5. 完整sql 如下:(需要注意,原来的 timestamp的默认值,这个也需要加上)
ALTER TABLE `student` CHANGE `create_time` `temp_create_time` timestamp NOT NULL default '0000-00-00 00:00:00';
ALTER TABLE `student` ADD `create_time` DATETIME NOT NULL default '0000-00-00 00:00:00';
UPDATE `student` SET `create_time` = `temp_create_time`;
ALTER TABLE `student` DROP `temp_create_time`;