Использование MySQL TIMESTAMP против непосредственного сохранения временных меток

Я столкнулся с дилеммой относительно сохранения значений даты и времени в формате MySQL TIMESTAMP по сравнению с пользовательским форматом UNSIGNED INT. Основными соображениями здесь являются скорость извлечения, соответствующие вычисления диапазонов в PHP и случайное форматирование в удобочитаемые значения.

Объем памяти, необходимый для каждого типа и их диапазонов:

DATETIME        8 bytes  '1000-01-01 00:00:00' to '9999-12-31 23:59:59'
TIMESTAMP       4 bytes  '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC
UNSIGNED INT    4 bytes  (Maximum Value 4294967295)

Мне вообще не нужен диапазон DATETIME. Я разрываюсь между TIMESTAMP и UNSIGNED INT.

Аргументы в пользу UNSIGNED INT:

  • Временная метка UNIX 4294967295 преобразуется в Sun, 07 февраля 2106, 06:28:15 GMT, что больше, чем TIMESTAMP, и достаточно для me
  • Сравнение этих временных меток непосредственно в PHP было бы быстрее, чем преобразование TIMESTAMP через strtotime () с последующим их сравнением

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

Есть ли веские причины использовать TIMESTAMP, а не UNSIGNED INT?

37
задан siliconpi 11 August 2011 в 16:03
поделиться

1 ответ

Это не может быть «научным» ответом, но я всегда нахожу путаницу в MySql преобразование, арифметику, сравнение и т.д. в столбцах TIMESTAMP. Столбец UNSIGNED INT намного проще, и я всегда знаю, чего ожидать.

P.S. Возможно, еще одна вещь в пользу столбца TIMESTAMP - это его способность автоматически устанавливать текущее время после каждого обновления или вставки, но это не то, без чего вы не можете жить.

3
ответ дан 27 November 2019 в 04:59
поделиться
Другие вопросы по тегам:

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