我刚刚意识到当unix时间被重置为负的最小范围时,2038年的问题,所以我决定对这个有趣的话题进行一些研究。
现在我正在设计数据库的结构(在mysql中),我认为这两个注意事项可能会解决问题:
1) - 将时间数据存储在时间戳字段中,但存储在bigint(或更大)列中。
2) - 我将用于我的应用程序的服务器使用64位操作系统,因此如果我使用php日期函数,它将正确返回日期。
基于这些考虑因素,我即将接受使用时间戳,你怎么看待它?感谢的..
答案 0 :(得分:0)
MySQL DATETIME
列的范围一直到9999-12-31 23:59:59
所以如果您担心Y2K38问题,我建议您使用这些而不是TIMESTAMP
。
TIMESTAMP
超过DATETIME
的唯一优势是自动时区转换,但我们倾向于将所有时间都存储为UTC,这对我们来说不是问题。
如果确实想要使用时间戳,那么我很确定在2038年之前将会有一致的努力将MySQL和C系统升级到time_t
更多范围。由于它是C下的一个独特类型,因此更新起来相当容易。
而且,与C中的平面文件不同,迁移数据库数据要简单得多,因为列元数据(例如 列包含时间戳)很容易获得。