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也没有用(返回相同的东西).
简单地说,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多年的"生存"......
| 归档时间: |
|
| 查看次数: |
869 次 |
| 最近记录: |