Как следует хранить временные метки unix в столбцах int?

у меня есть таблица регистрации, которая будет содержать миллионы записей по статистическим причинам. Все столбцы являются внешними ключами типа int. Я также собираюсь добавить столбец с отметкой времени для каждой строки. Учитывая, что DATETIME занимает 8 бит, я буду использовать int (10) unsigned , чтобы вдвое сократить пространство для хранения (и индексировать этот столбец).

Однако мне интересно, когда эта колонка перестанет работать. В 3:14:07 19 января 2038 г. значение 9 999 999, 999 будет проблемой для временных меток UNIX - но unsigned int в MySQL содержит только до 4 294 967 295, а временная метка 4294967295 показывает недопустимое число в моем приложении PHP.

Итак, что это означает? Будет ли конец хранения временных меток int в MySQL где-то в 2021 году, поскольку он не может достичь 9999999999?

Ответ:

  1. 2147483647 - это 2038 (не 9999999999), так что проблем нет.
  2. unsigned не требуется, так как 2147483647 отлично подходит для подписанного MySQL int.
60
задан Xeoncross 27 November 2010 в 02:59
поделиться