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
?
2038-01-19 03:14:07
из временных меток unix объясняется на странице stackoverflow.com/a/40899947/320594. - person Jaime Hablutzel   schedule 08.06.2019