在我的许多 MySQL 数据库表中,我一直在字段中存储时间戳(来自 php time()
) 。int UNSIGNED
但是,time()
如果我没记错的话,它会返回 13 位值,并INT UNSIGNED
存储最多2147483647
只有 10 位长度的值。因此,返回的任何值time()
都将是一个太大的数字,无法存储在int
字段中。
但是,我的时间戳都没有被截断,那么它如何能够存储这么大的值呢?是数据库不一致还是我遗漏了什么?
在我的许多 MySQL 数据库表中,我一直在字段中存储时间戳(来自 php time()
) 。int UNSIGNED
但是,time()
如果我没记错的话,它会返回 13 位值,并INT UNSIGNED
存储最多2147483647
只有 10 位长度的值。因此,返回的任何值time()
都将是一个太大的数字,无法存储在int
字段中。
但是,我的时间戳都没有被截断,那么它如何能够存储这么大的值呢?是数据库不一致还是我遗漏了什么?
自 epoch (1970) 以来,目前已经过去了 1343399732 秒,这可以很好地存储在有符号的 int 中。
它处理的是与2038年左右相关的秒数,当您将秒数存储在有符号的 32 位 int 中时,这会开始给您带来麻烦。