Я столкнулся с дилеммой относительно сохранения значений даты и времени в формате 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:
Единственное преимущество, которое дает мне TIMESTAMP, - это когда я вручную читаю значения из таблицы mysql и нужно «увидеть» их.
Есть ли веские причины использовать TIMESTAMP, а не UNSIGNED INT?
Это не может быть «научным» ответом, но я всегда нахожу путаницу в MySql преобразование, арифметику, сравнение и т.д. в столбцах TIMESTAMP. Столбец UNSIGNED INT намного проще, и я всегда знаю, чего ожидать.
P.S. Возможно, еще одна вещь в пользу столбца TIMESTAMP - это его способность автоматически устанавливать текущее время после каждого обновления или вставки, но это не то, без чего вы не можете жить.