【MySQL】ERROR 1292 (22007): Incorrect datetime value: '9999-12-31' for column 'endDate'

深度链接 / 2023-12-06 21:48:31 / 206

时间类型为timestamp的字段插入“9999-12-31”出现ERROR 1292 (22007): Incorrect datetime value: '9999-12-31' for column 'endDate',查找资料得知timestamp类型取值范围:1970-01-01 00:00:00 到 2037-12-31 23:59:59,datetime 类型取值范围:1000-01-01 00:00:00 到 9999-12-31 23:59:59。如果需要插入“9999-12-31”,则需要修改字段时间类型为datetime。

1、错误重现

出现插入错误的数据表如下:

无标题.png

字段endDate数据类为timestamp,在执行插入后出现

ERROR 1292 (22007): Incorrect datetime value: '9999-12-31' for column 'endDate' at row 1

2、错误解决

查找资料得知timestamp类型取值范围:1970-01-01 00:00:00 到 2037-12-31 23:59:59,datetime 类型取值范围:1000-01-01 00:00:00 到 9999-12-31 23:59:59。如果需要保存超过2037-12-31 23:59:59的时间,则需要将时间类型修改为datetime。如果保存的时间只需要日期无需时间,则可以使用date时间类型

3、总结

3.1、时间类型timestamp介绍

a、timestamp类型取值范围:1970-01-01 00:00:00 到 2037-12-31 23:59:59

b、timestamp类型具有自动初始化和自动更新的特性

c、timestamp字段保存的时间和时区密切相关,时区不同保存的时间也不相同


3.2、时间类型datetime介绍

a、datetime 类型取值范围:1000-01-01 00:00:00 到 9999-12-31 23:59:59