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
. Третото поле е най-високата възможна стойност за unsigned 32 bit int. Крайната стойност е разликата между най-високото възможно UNIXTIME и най-високото възможно int, което е малко над 18 дни на стойност секунди. Изглежда, че спира в края на 2037
в местната часова зона. Някакви идеи защо? Това естествена точка на прекъсване ли е в някое от изчисленията? Това само произволно ограничение в mysqld
ли е?
2038-01-19 03:14:07
от времеви отпечатъци на unix е обяснено на stackoverflow.com/a/40899947/320594 - person Jaime Hablutzel   schedule 08.06.2019