什么是用于unix时间戳的最佳字段类型?
int(10)
会持续一段时间吗?
答案 0 :(得分:73)
Unix time_t
要么是32位宽,要么是64位。因此,int(8)
或binary(8)
就足够了,至少在接下来的2930亿年内是这样。
答案 1 :(得分:15)
MySQL INT(n)
数据类型中的数字未指定保留多少存储空间,它只是用于格式化的显示宽度。因此,INT(10)
与普通INTEGER
相同,也就是说32位有符号数。
因此,这肯定是32位Unix时间戳的适当数据类型。但是如果你想要64位时间戳,那就不够了;你必须使用BIGINT
。
答案 2 :(得分:4)
对于时间戳,您应该使用TIMESTAMP
或DATETIME
字段类型。
答案 3 :(得分:4)
对于Unix时间戳,您可以轻松使用INT(4) UNSIGNED
,其最大值为4294967295
。您可以在接下来的〜133年内存储time()
值。如果您的应用程序因此而停止工作,您将会长期死亡;)
您也可以尝试使用TIMESTAMP数据类型,这样做的问题较少,当您想将其转换为Unix时间戳时,您可以使用UNIX_TIMESTAMP()函数。
离。
SELECT UNIX_TIMESTAMP(col_timestamp) FROM tbl_name;