Почему бы не использовать MySQL TIMESTAMP повсеместно?
Вопрос
Если вам нужно, чтобы ваше веб-приложение выполняло перевод между часовыми поясами для каждого пользователя, почему бы не использовать 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 на дату и время. Р>