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插入日期的主要内容,如果未能解决你的问题,请参考以下文章

PHP Y2K38 (2038年) 问题

32位unix时间戳哪一年耗尽

2038 年嵌入式 Linux(32 位)解决方案? [复制]

php解决时间超过2038年

WampServer 2.5 64位 WampServer是Apache+PHP+Mysql 集成环境

到2038年1月19日那天,Unix时钟会失效吗?