Каковы веские причины для выбора TIMESTAMP вместо столбцов DATETIME в MySQL? - PullRequest
6 голосов
/ 08 февраля 2010

Отказ от ответственности: Это может быть дубликат дата-время против отметки времени? , но я чувствую, что не уверен в ответах:

Мой вопрос:
Каковы веские причины выбирать столбцы TIMESTAMP вместо столбцов DATETIME в MySQL?

Я почти уверен, что не знаю всего о различиях между этими двумя, поэтому я постараюсь перечислить основные преимущества DATETIME (DT) по сравнению с TIMESTAMP (TS), насколько мне известно. :

  • DT читается человеком (TS не без использования TO_DATE)
  • DT имеет возможный интервал времени в 8999 лет (1000-01-01 00:00:00 до 9999-12-31 23:59:59)
    (TS только около 68 лет, 1970-01-01 до 2038-01-19)
  • DT поля, кажется, работают лучше (согласно этому сообщению в блоге )
  • DT может использоваться для расширенного расчета даты (SELECT NOW() + INTERVAL 2 DAY)

И наоборот:

  • TS требуется всего 4 байта (DT использует 8)
  • TS сохраняются как значения UTC и изменяются в соответствии с настройкой часового пояса клиента
  • TS столбцы могут служить «журналом» для мониторинга, когда в строке есть изменения

Единственной причиной, по которой я его использую, является мониторинг строк, но, глядя на диапазон TIMESTAMP, который закончится через "только" 28 лет *, я бы предпочел использовать триггер вставки или обновления.

Итак, что мне не хватает? Я до сих пор не вижу действительно хорошей причины выбора метки времени для каких-либо целей?

* Я знаю, это кажется довольно длинным, но еще в 60-х годах некоторые инженеры также решили сократить 2 байта поля года, потому что их компьютерные системы никогда не будут работать до тех пор, пока 2000 год .....

Ответы [ 3 ]

3 голосов
/ 08 февраля 2010

Столбцы DT также могут служить «журналом» для мониторинга изменений строки, я использую их и запускаю для этого.

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

2 голосов
/ 08 февраля 2010

Основной вопрос: какова цель поля даты / времени? Если это просто отметка времени, как в файле журнала, где вы храните только фактическое время, отметка времени является лучшим выбором. Потому что для этого требуется всего 4 байта, и мы находимся в области действия, которую может охватывать отметка времени. Если это дата, подобная дате рождения, то дата и время - хороший выбор. Мы надеемся, что у нас будет решение до конца диапазона отметок времени. ;) (Извините за мой английский).

1 голос
/ 08 февраля 2010

Вот забавный аспект DT, который я уже использовал: Используя DT - по крайней мере в MySQL - у вас есть возможность оставить либо год в «0000», и / или месяц и день: «00-00». Это удобно для хранения дат дня рождения без полной информации!

...