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

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

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

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

К какому количеству времени этот “бит” относится? Это достаточно долго, чтобы мы смогли управлять веб-приложениями до конца? Если это не так, похож на это расширение только двух лет поэтому, когда 2040 год наступает, мы собираемся иметь приложения, которые не работают соответственно?

24
задан 17 September 2015 в 16:10

2 ответа

Хорошо, если существует опция буквально купить "бит", т.е. передачу от целого числа на 32 бита со знаком до неподписанного целого числа на 32 бита, вещи продолжают работать в 2 106.

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

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

$ uname -p
x86_64

$ date --date=9090-01-01 +%s
224685532800

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

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

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

, Это даже не устройство хранения данных. Это немного вызывает жалость.

(И да, который был выполнен на MariaDB, версии 10.1)

34
ответ дан 23 November 2019 в 01:19

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

9999-12-31T23:59:59+00:00
6
ответ дан 23 November 2019 в 01:19

Другие вопросы по тегам:

Похожие вопросы: