当数据类型为 bigint(8) 但作为 bigint(20) 失败时,mysql 排序功能正常

标签 mysql sorting biginteger

我正在使用一个列来存储 UNIX 时间戳以秒为单位(除以 1000)。我发现 bigint 数据类型足以存储它。我使用

创建了它
 ...
 createTimeStamp bigint,
 ...

但是,当我跑的时候

show create table tablename

它已将其创建为 bigint(20)。直到我的排序开始遇到问题,我才注意到它。然后,我修改了模式,使其成为 bigint(8),如下所示:

alter table tablename modify createTimeStamp bigint(8)

而且排序功能很好。

我研究了一下发现bigint(20)与存储无关,只是用来填充空格显示的。如果是这样,为什么在使用 bigint(20) 时排序不起作用?

最佳答案

Mysql 在使用超过 64 位的数字时暗示错误。

http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html

BIGINT[(M)] [UNSIGNED] [ZEROFILL]

A large integer. The signed range is -9223372036854775808 to 9223372036854775807. The unsigned range is 0 to 18446744073709551615. ... ...

Some things you should be aware of with respect to BIGINT columns:

All arithmetic is done using signed BIGINT or DOUBLE values, so you should not use unsigned big integers larger than 9223372036854775807 (63 bits) except with bit functions! If you do that, some of the last digits in the result may be wrong because of rounding errors when converting a BIGINT value to a DOUBLE.

关于当数据类型为 bigint(8) 但作为 bigint(20) 失败时,mysql 排序功能正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34488620/

相关文章:

Mysqli 从同一行中选择多个

python - 按图像大小对图像矩阵(Numpy 和数组)列表进行排序

php - 莱格伯排序的问题

java - 将两个大数作为字符串相除,而不使用java中的Bignumbers

java - 如何将一个非常大的数字分配给 BigInteger?

php - MySQL 查询在 PHPMyAdmin 中成功,但在 PHP 脚本本身中失败

mysql - log4net 到 MySql JSON 数据

mysql - 有没有办法在 mysql 中修改相同的内容?

c - 数组排序

perl - 在 Perl 中处理非常大的数字时,如何禁用科学记数法?