Por que o tempo unix do MySQL para antes do limite inteiro não assinado de 32 bits?

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> 

O primeiro campo é o valor mais alto possível que posso atribuir aFROM_UNIXTIME. O próximo campo é esse valor mais um que retornaNULL. O terceiro campo é o valor mais alto possível para um int de 32 bits não assinado. O valor final é a diferença entre o UNIXTIME mais alto possível e o maior int possível, que tem um pouco mais de 18 dias de segundos. Parece que para no final de2037 no fuso horário local. Alguma idéia do porquê? Esse é um ponto de ruptura natural em um dos cálculos? Isso é apenas um limite arbitrário emmysqld?

questionAnswers(2)

yourAnswerToTheQuestion