Что серьезные основания состоят в том, чтобы предпочесть МЕТКУ ВРЕМЕНИ столбцам DATETIME в MySQL?

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

Мой вопрос:
Что серьезные основания состоят в том, чтобы предпочесть МЕТКУ ВРЕМЕНИ столбцам DATETIME в MySQL?

Я вполне уверен, я не знаю все, которое существует о различиях между теми двумя, таким образом, я попытаюсь перечислить основные преимущества ДАТЫ И ВРЕМЕНИ (DT) сравненный с МЕТКОЙ ВРЕМЕНИ (TS) к моему знанию:

  • DT человекочитаемо (TS не без использования TO_DATE)
  • DT имеет possble промежуток 8 999 лет (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 года.....

6
задан Community 23 May 2017 в 11:48
поделиться

3 ответа

Согласно документации , для подклассов Model не определен метод экземпляра id () .

Попробуйте {{вопрос.key}} .

Также обратите внимание, что ключ не создается до тех пор, пока объект не будет сохранен в хранилище данных.


Edit: more information based on OP's edit:

Поскольку мы действительно после числового идентификатора , мы могли бы сделать что-то подобное в нашем шаблоне:

{{question.key.id}}

Другое замечание: никогда не следует ожидать увеличения числовых идентификаторов в соответствии с порядком создания сущности. На практике это обычно - но не всегда - так.

-121--3866244-

Следует учитывать дополнительный атрибут, который можно применить к классу/структуре, указывая, что отмечены ноль или несколько методов этого типа. Это должно дать вам как минимум на порядок улучшение производительности.

Если атрибут определен пользователем (не встроен в рамку .NET), то при перечислении сборок для получения типов следует пропустить сборки рамки, такие как mscorlib и System.

Столбцы -121--4605291-

DT также могут служить в качестве «регистрации» для мониторинга при изменении строки.

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

3
ответ дан 17 December 2019 в 02:28
поделиться

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

2
ответ дан 17 December 2019 в 02:28
поделиться

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

1
ответ дан 17 December 2019 в 02:28
поделиться
Другие вопросы по тегам:

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