Временная метка, проблема 2038 года для 64-битной системы Ubuntu

Я использую 64-битную систему Ubuntu.

В настоящее время я работаю над проектом, который включает MariaDB. Я планирую ввести в проект временную технику, чтобы люди получили правильное время для разного часового пояса.

Я слышал и читал некоторые статьи о проблеме 2038 года для отметки времени. Многие статьи предполагают, что мы используем 64-битную систему, чтобы купить «бит» больше времени.

Сколько времени стоит этот «бит»? Достаточно ли достаточно времени для того, чтобы мы могли управлять веб-приложениями до конца? Если это не так, это похоже на продление только на два года, поэтому, когда наступит 2040 год, у нас появятся приложения, которые не работают должным образом?

Хорошо, если есть возможность буквально купить «бит», т. Е. Перевести с 32-битного целого числа на неподписанное 32-битное целое число, все продолжает работать в 2106.

Передача на 64-битный «несколько лучше». Вы получаете разрешение на сотни миллиардов лет.

И Ubuntu делает это:

 $ uname -p x86_64 $ date --date=9090-01-01 +%s 224685532800 

Однако это уровень ОС. Просто потому, что Ubuntu использует 64-битное целое по времени, это не означает, что MySQL / MariaDB будет использовать его для хранения временных меток. Если даты до 2038 года важны для вас сейчас, немедленно начните тестирование.

На самом деле, я могу сэкономить некоторое время. Он все еще сломан. Об этой ошибке сообщалось более десяти лет назад, но ее основной тест по-прежнему терпит неудачу с 64-битным int.

 mysql> select from_unixtime(2548990800); +---------------------------+ | from_unixtime(2548990800) | +---------------------------+ | NULL | +---------------------------+ 1 row in set (0.00 sec) 

Это даже не хранение. Это немного жалко.

(И да, это было запущено на MariaDB, версия 10.1)

Не храните его как целое. Сохраните его как строку даты в формате ISO 8601 . Это стандартный формат, используемый в Интернете.

 9999-12-31T23:59:59+00:00