【发布时间】:2011-05-16 10:39:12
【问题描述】:
出于统计原因,我有一个包含数百万次写入的日志记录表。所有列都是 int 外键。我还将为每一行添加一个时间戳列。鉴于 DATETIME 需要 8 位 - 我将使用 int(10) unsigned 将存储空间(以及该列上的索引)减半。
但是,我想知道这个专栏什么时候不再有用。在 2038 年 1 月 19 日凌晨 3:14:07,值 9,999,999,999 将成为 UNIX 时间戳的问题 - 但 MySQL 中的 unsigned int 最多只能保存 4,294,967,295,并且时间戳 4294967295 在我的 PHP 应用程序中显示无效数字。
那么这是什么意思呢? MySQL 中存储 int 时间戳的结束是否会在 2021 年某个时候结束,因为它无法一直到 9999999999?
答案:
- 2147483647 是 2038(不是 9999999999)所以没有问题。
-
unsigned不需要,因为 2147483647 非常适合已签名的 MySQL int。
【问题讨论】:
-
那我会担心的。 ;)
-
即使你有 1000 万行,你也会使用额外的 9.5 MB... 只需使用 DATETIME 类型,真的。
-
您应该记住,DateTime 类型的目的是保护您根本不必处理这个问题。
-
你们中的一些年轻人可能仍然在 2038 年左右,届时必须应对这些选择。 ;-)
-
@Don,他只是确保我们在 2038 年还有工作。继续努力,Xeoncross。
标签: mysql datetime unix-timestamp