2038年问题 - 64位(Linux OS,php,mysql)

Dan*_*elo 2 php mysql linux

select unix_timestamp('2038-01-19') 回报 2147472000

而select unix_timestamp('2038-01-20')回归0

我查看了一年的2038问题.

我的linux操作系统是64位,安装的mysql版本也是64位.现在这个问题的解决方案是什么?

mysql --version返回mysql Ver 14.14 Distrib 5.5.47, for Linux (x86_64) using readline 5.1
Php也是64位.

尝试BigInt也没有用(返回相同的东西).

Mar*_*coS 6

简单地说,MySQL存储日期DATETIME而不是TIMESTAMP.

TIMESTAMP是4个字节,因此没有物理空间来存储比1970-1-1到2038-01-19之间更多的秒数......

相反,DATETIME的范围为1000-1-1到9999-12-31 ......

另见完整的问题/答案:PHP和mySQL:2038年错误:它是什么?怎么解决?

UPDATE:一种可能的替代我看,如果你不能改变你的字段类型,是解读前面不同的时间戳...
我的意思是:如果第一个事件你的应用程序将保持跟踪是-说- 2000-1-1,你可以实现一个过滤器在后端(或在数据库内的存储过程中),在阅读时为你的时间戳添加(2000-1-1- 1970-1-1)秒,并在阅读时减去相同的数量......这应该会给你30多年的"生存"......

  • @DanyalSandeelo:我不想在下个月支付租金.我想我们两个都不得不开心.*耸肩* (2认同)