在MySQL中,TIMESTAMP列的默认范围是从'1970-01-01 00:00:01'到'2038-01-19 03:14:07'。如果插入的时间值超出了该范围,MySQL会将其视为无效值,并将其设置为'0000-00-00 00:00:00'。
在MySQL 8.0.35最新版本中,timestamp时间戳溢出的问题目前仍旧没有解决。如下图所示:
为了解决这个问题,只能更改表结构,将update_time
列的数据类型更改为DATETIME类型,它的范围比TIMESTAMP更大。
ALTER TABLE `t2` MODIFY COLUMN `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
如果你的表很大,操作起来就比较麻烦,所以为了避免15年后的“填坑“,用datetime类型代替timestamp更为适宜。