64位MySQL的PHP 2038年问题无法通过PHPMyAdmin插入日期
Posted
技术标签:
【中文标题】64位MySQL的PHP 2038年问题无法通过PHPMyAdmin插入日期【英文标题】:PHP year 2038 problem with 64bit MySQL can't insert date through PHPMyAdmin 【发布时间】:2019-11-04 23:33:03 【问题描述】:我有一个 mysql 表,它有一个名为“created_at”的列,它是一个 TIMESTAMP 字段。每当我尝试插入大于 2037 的日期时间时,都会出现以下错误:
#1292 - Incorrect datetime value: '2039-06-18 16:54:35' for column 'created_at' at row 1
我知道这是 32 位 MySQL 的问题,但我运行的是 64 位,这不应该是解决方案吗?
这是我的 MySQL 版本的命令输出:
mysqld Ver 5.7.26-0ubuntu0.18.04.1 for Linux on x86_64 ((Ubuntu))
阅读 this 提示使用 TIMESTAMP 字段是问题,使用 DATETIME 字段可以解决问题,对吗?
【问题讨论】:
【参考方案1】:出于兼容性原因,TIMESTAMP 仍然是 UNIX TIMESTAMP (32Bit)...
您阅读的建议是正确的,请改用 DATETIME。
【讨论】:
【参考方案2】:您应该使用DATETIME
数据类型。
The DATE, DATETIME, and TIMESTAMP Types
TIMESTAMP 数据类型用于同时包含日期和时间部分的值。 TIMESTAMP 的范围为 '1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC。
【讨论】:
以上是关于64位MySQL的PHP 2038年问题无法通过PHPMyAdmin插入日期的主要内容,如果未能解决你的问题,请参考以下文章
2038 年嵌入式 Linux(32 位)解决方案? [复制]