Подтвердить что ты не робот

Временная метка Unix VS datetime

Возможный дубликат:
datetime vs timestamp?

У меня есть таблица Mysql, которая имеет столбец add_date. Он отслеживает дату/время, когда запись была добавлена ​​в базу данных.

Запросы, основанные на этой таблице:

  • Показывать, когда запись была добавлена ​​в формате: 2 часа назад, 4 недели назад, 1 год назад и т.д.
  • Разрешить пользователям поиск записей, вставленных в любой день/месяц/год. Таким образом, пользователю может быть разрешено выбирать записи только в 2009 году.

Что было бы лучше в этом случае - временная метка unix или datetime?

Сейчас я использую оба, но поскольку таблица будет иметь миллионы записей с течением времени, наличие обоих столбцов может повлиять на размер базы данных.

Временная метка Unix, по-видимому, лучше для преобразования в формат 2 hours назад в PHP, а также независимая от часовой пояс. Но datetime лучше читается, и запрос на конкретную дату/время/год кажется проще.

Ваше предложение?

4b9b3361

Ответ 1

Если у вас есть выбор, я бы сказал, что выходите на даты mySQL.

  • Вам не придется заботиться о проблема с датами > s

  • Вы можете легко запросить промежутки времени, используя функции даты mySQL (BETWEEN(), DATE_ADD и т.д.)

  • Запросы, связанные с датой, будут намного быстрее, особенно когда у вас есть миллионы записей, потому что вам не придется использовать FROM_UNIXTIME(), которые могут быть дорогими в больших запросах

  • Воспроизведение дочернего элемента для преобразования полей DATE в временные метки UNIX при необходимости.

Ответ 2

Я бы пошел для форматов mysql, просто потому, что mysql имеет множество функций datetime, чтобы использовать, что с timestamp будет стоить вам другого преобразования.

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

о, мой.
вы действительно обеспокоены в 4 дополнительных мегабайтах пространства?

Ответ 3

Вы можете получить лучшее из обоих миров, используя временную метку unix и функцию MySQL from_unixtime() для преобразования результата в формат даты и времени, где это необходимо.