Я перестал использовать datetime
в своих приложениях после того, как столкнулся со многими проблемами и ошибками, связанными с часовыми поясами. ИМХО, используя timestamp
лучше, чем datetime
, в большинстве случаев .
Когда вы спрашиваете, который час? и ответ приходит как что-то вроде «2019-02-05 21:18:30», это не завершенный, не определенный ответ, потому что ему не хватает другой части, в каком часовом поясе? Вашингтон? Москва ? Пекин?
Использование даты и времени без часового пояса означает, что ваше приложение имеет дело только с 1 часовым поясом, однако временные метки дают вам преимущество datetime
плюс возможность показывать один и тот же точный момент времени в разных часовых поясах.
Вот несколько случаев, которые заставят вас сожалеть об использовании datetime
и пожелать, чтобы вы сохранили свои данные в метках времени.
Для удобства ваших клиентов вы хотите показать им время в зависимости от предпочитаемых часовых поясов, не заставляя их делать математику, и переводить время в значимый часовой пояс. все, что вам нужно, это изменить часовой пояс, и весь код вашего приложения будет одинаковым. (На самом деле вы всегда должны определять часовой пояс при запуске приложения или обработку запросов в случае PHP-приложений)
SET time_zone = '+2:00';
вы изменили страну, в которой находитесь, и продолжили работу по сохранению данных, просматривая их в другом часовом поясе (без изменения фактических данных).
- вы принимаете данные от разных клиентов по всему миру, каждый из них вставляет время в своем часовом поясе.
Короче
datetime
= приложение поддерживает 1 часовой пояс (как для вставки, так и для выбора)
timestamp
= приложение поддерживает любой часовой пояс (как для вставки, так и для выбора)
Этот ответ предназначен только для того, чтобы подчеркнуть гибкость и простоту временных меток, когда речь идет о часовых поясах, и не охватывает никаких других отличий, таких как размер столбца , диапазон или дробь .