unix时间戳的字段类型

Meg*_*man 30 sql

什么是用于unix时间戳的最佳字段类型?

会不会int(10)有一段时间?

Mic*_*tta 77

Unixtime_t要么是32位宽,要么是64位.所以,int(8)或者binary(8)就足够了,至少在接下来的2930亿年里.

  • 请注意`int(8)`并不总是做这个答案所暗示的事情; [bobince的回答有一个解释.](http://stackoverflow.com/a/1993585/2014893) (3认同)

bob*_*nce 16

MySQL INT(n)数据类型中的数字不指定保留多少存储空间,它只是用于格式化的显示宽度.因此,INT(10)这与普通的相同INTEGER,即32位有符号数.

所以这肯定是32位Unix时间戳的合适数据类型.但是如果你想要64位时间戳,那就不够了; 你必须使用一个BIGINT.


Cod*_*ock 6

对于 Unix 时间戳,您可以轻松使用INT(4) UNSIGNED最大值为4294967295. 这足以让您存储time()未来约 133 年的价值。如果您的应用程序因此而停止工作,您将死掉很久;)

您也可以尝试使用 TIMESTAMP 数据类型,它的问题较少,当您想将其转换为 Unix 时间戳时,您可以使用 UNIX_TIMESTAMP() 函数。

前任。

SELECT UNIX_TIMESTAMP(col_timestamp) FROM tbl_name;
Run Code Online (Sandbox Code Playgroud)


Tat*_*nen 3

对于时间戳,您应该使用TIMESTAMPorDATETIME字段类型。

  • 然而,这会让您受到数据库和访问层的日期类型和字符串表示的支配,这会使编写跨环境应用程序变得更加困难。使用行为完全可预测的普通整数通常更简单、更方便,数据库中没有您希望比较的其他日期类型。 (6认同)