Gymterview
junior

Опишите разницу типов данных DATETIME и TIMESTAMP

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

Характеристика DATETIME TIMESTAMP
Хранимое значение Дата и время «как есть» (YYYYMMDDHHMMSS) Количество секунд с 01.01.1970 UTC
Размер 8 байт 4 байта
Часовой пояс Не зависит от настроек сервера Хранится в UTC, отображается с учётом часового пояса
Диапазон (MySQL) 1000-01-01 — 9999-12-31 1970-01-01 — 2038-01-19
Использование Исторические даты, дата рождения Время событий (created_at, updated_at)

TIMESTAMP автоматически конвертирует значение в UTC при записи и обратно в часовой пояс клиента при чтении. Это делает его идеальным для хранения временных меток событий в распределённых системах. DATETIME хранит значение буквально — если записать 2026-05-17 15:00:00, именно это значение будет возвращено независимо от часового пояса.

Ограничение TIMESTAMP — проблема 2038 года: 32-битное целое число переполнится 19 января 2038 года. В PostgreSQL оба типа (timestamp и timestamptz) используют 8 байт и не имеют этого ограничения.

На собеседовании: ключевое — TIMESTAMP зависит от часового пояса, а DATETIME — нет. Частая ошибка — не упомянуть проблему 2038 года для 4-байтового TIMESTAMP.