Отказ от ответственности: Это могло бы быть дубликатом даты и времени по сравнению с меткой времени?, но я чувствую, что не убежден в ответах:
Мой вопрос:
Что серьезные основания состоят в том, чтобы предпочесть МЕТКУ ВРЕМЕНИ столбцам 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 года.....
Согласно документации , для подклассов Model не определен метод экземпляра id ()
.
Попробуйте {{вопрос.key}}
.
Также обратите внимание, что ключ не создается до тех пор, пока объект не будет сохранен в хранилище данных.
Edit: more information based on OP's edit:
Поскольку мы действительно после числового идентификатора , мы могли бы сделать что-то подобное в нашем шаблоне:
{{question.key.id}}
Другое замечание: никогда не следует ожидать увеличения числовых идентификаторов в соответствии с порядком создания сущности. На практике это обычно - но не всегда - так.
-121--3866244-Следует учитывать дополнительный атрибут, который можно применить к классу/структуре, указывая, что отмечены ноль или несколько методов этого типа. Это должно дать вам как минимум на порядок улучшение производительности.
Если атрибут определен пользователем (не встроен в рамку .NET), то при перечислении сборок для получения типов следует пропустить сборки рамки, такие как mscorlib и System.
Столбцы -121--4605291-DT также могут служить в качестве «регистрации» для мониторинга при изменении строки.
Обычно я использую временную метку при работе с большим количеством PHP-материалов, чтобы сократить слишком большой анализ даты. Если возникнет необходимость, я могу обновить программное обеспечение для использования datetime.
Главный вопрос: что цель поля dateime / timestamp? Если это просто временная метка, как в файле журнала, где вы храните только фактическое время, временная метка - лучший выбор. Потому что для этого нужно всего 4 байта, и мы находимся в пределах того, что метка времени может покрыть его. Если это дата, такая как дата рождения, хорошим выбором будет datetime. Мы надеемся, что у нас будет решение до истечения срока действия метки времени. ;) (Извините за мой английский).
Вот забавный аспект DT. который я уже использовал: Используя DT - по крайней мере, в MySQL - вы можете оставить либо год на «0000», либо и / или месяц и день: «00-00». {{1} } Это удобно для хранения дат рождения, не требуя полной информации!