我使用一列来存储UNIX时间戳,以秒为单位(除以1000)。我发现bigint数据类型足以存储它。我用
创建了它 ...
createTimeStamp bigint,
...
然而,当我跑
时show create table tablename
它创建了bigint(20)。在我的排序开始遇到问题之前我没有注意到它。然后我修改了模式,使其明确地使用bigint(8),如下所示:
alter table tablename modify createTimeStamp bigint(8)
并且排序功能很好。
我研究并发现bigint(20)与存储无关,仅用于填充空间显示。如果是这样,为什么使用bigint(20)时排序不起作用?
答案 0 :(得分:1)
当使用超过64位的数字时,Mysql会提到错误。
http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html
BIGINT [(M)] [UNSIGNED] [ZEROFILL]
一个大整数。签署的范围是-9223372036854775808到 9223372036854775807.无符号范围是0到18446744073709551615。 ... ......
关于BIGINT列你应该注意的一些事情:
所有算术都是使用带符号的BIGINT或DOUBLE值完成的,所以你 不应该使用大于的无符号大整数 9223372036854775807(63位)除了位功能!如果你这样做 因为,结果中的一些最后数字可能是错误的 将BIGINT值转换为DOUBLE时的舍入错误。