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位整數的最高可能值。最終的值是最高可能的UNIXTIME和最高可能的int之間的差值,這個值稍微超過18天。它似乎停在當地時區2037
的末尾。任何想法爲什麼?這是計算中的一個自然突破點嗎?這只是mysqld
的任意限制嗎?爲什麼MySQL的unix時間停止短於32位無符號整數限制?
好問題。可能與時區有關。 – anttir 2011-01-21 18:20:00