У меня есть таблица регистрации, которая будет содержать миллионы записей по статистическим причинам. Все столбцы являются внешними ключами. Я также собираюсь добавить столбец отметки времени для каждой строки. Учитывая, что DATETIME занимает 8 бит - я буду использовать int(10) unsigned
, чтобы сократить пространство хранения (и индекс для этого столбца) пополам.
Однако мне интересно, когда этот столбец больше не будет работать. В 3:14:07 19 января 2038 года значение 9,999,999,999 будет проблемой для отметок времени UNIX, но беззнаковое целое в MySQL содержит только 4,294,967,295, а отметка времени 4294967295 показывает недопустимое число в моем приложении PHP.
Так что это значит? Будет ли конец хранения временных меток int в MySQL где-то в 2021 году, поскольку он не может пройти весь путь до 9999999999?
Ответ:
- 2147483647 - 2038 (не 9999999999), поэтому проблем нет.
unsigned
не требуется, поскольку 2147483647 отлично подходит для подписанного типа MySQL.