Почему бы не использовать MySQL TIMESTAMP повсеместно?

StackOverflow https://stackoverflow.com/questions/1003171

  •  05-07-2019
  •  | 
  •  

Вопрос

Если вам нужно, чтобы ваше веб-приложение выполняло перевод между часовыми поясами для каждого пользователя, почему бы не использовать TIMESTAMP для всех полей даты и времени?Учтите, что значения TIMESTAMP хранятся в формате UTC и при получении преобразуются в часовой пояс, установленный для соединения.

Я задал этот вопрос в IRC, прочитал документацию MySQL, тщательно поискал в Google и спросил своих коллег, но мне еще предстоит найти вескую причину не использовать TIMESTAMP.

Примечание:Я понимаю, что TIMESTAMP имеет ограниченный диапазон: 1970–2038;в моем случае это не будет проблемой.Кроме того, я использую PHP с MySQL.

Это было полезно?

Решение

DATETIME предназначен для произвольных дат и времени, которые вы используете в своих данных.

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

Кроме того, имейте в виду, что TIMESTAMP – это только хранится в формате UTC — он преобразуется в местный часовой пояс сервера перед отправкой обратно как часть запроса.

В вашем случае лучше использовать DATETIME.Если вас беспокоит UTC, ничего страшного — просто создавайте даты в формате UTC, а не в местном времени.Использовать UTC_TIMESTAMP.

Другие советы

Я думаю, что ваш ответ здесь:

  

Я понимаю, что у TIMESTAMP ограниченный диапазон 1970 - 2038 гг .; это не будет проблемой в моем случае.

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

Ответ Рэндальфо неверен по многим фактам!

Метки времени не нужно автоматически обновлять при создании ИЛИ обновлений.

Кроме того, временные метки переводятся на местное время КЛИЕНТА, а не на сервер.

Просто посмотрите документы MySQL на дату и время.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top