mysql> SELECT FROM_UNIXTIME(2145916799), FROM_UNIXTIME(2145916800), POW(2,32-1)-1, 2145916799 - POW(2,32-1)-1;
+---------------------------+---------------------------+---------------+----------------------------+
| FROM_UNIXTIME(2145916799) | FROM_UNIXTIME(2145916800) | POW(2,32-1)-1 | 2145916799 - POW(2,32-1)-1 |
+---------------------------+---------------------------+---------------+----------------------------+
| 2037-12-31 18:59:59 | NULL | 2147483647 | -1566850 |
+---------------------------+---------------------------+---------------+----------------------------+
1 row in set (0.00 sec)
mysql>
第一个字段是我可以给出的最高值FROM_UNIXTIME
。下一个字段是那个值加上一个返回的值NULL
。第三个字段是无符号 32 位 int 的最高可能值。最终值是可能的最高 UNIXTIME 和可能的最高 int 之间的差值,即 18 天多一点的秒数。它似乎2037
在本地时区结束时停止。任何想法为什么?这是其中一个计算中的自然转折点吗?这只是一个任意限制mysqld
吗?