В MySQL (и других реляционных БД) типы данных
DATETIME и TIMESTAMP используются для хранения даты и времени, но у них есть несколько ключевых отличий. 🚩Когда использовать `DATETIME` и `TIMESTAMP`?
Используйте
DATETIME, если: Нужно хранить фиксированное значение даты и времени, не зависящее от часового пояса.
Работаете с датами за пределами 1970-2038 гг.
Требуется удобочитаемый формат (без конверсий).
Используйте
TIMESTAMP, если: Нужно учитывать часовой пояс (например, хранить время в UTC, а при запросе автоматически конвертировать в локальное).
Важно автоматическое обновление при изменении строки (
ON UPDATE CURRENT_TIMESTAMP). Нужно экономить память (занимает в 2 раза меньше места, чем
DATETIME). 🚩Примеры
DATETIME (Фиксированная дата и время)
CREATE TABLE events (
id INT PRIMARY KEY,
event_time DATETIME NOT NULL
);
INSERT INTO events VALUES (1, '2025-02-17 12:30:00');
TIMESTAMP (Автообновление + Часовые пояса)
CREATE TABLE logs (
id INT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
Если изменим
time_zone, TIMESTAMP отобразится в новом часовом поясе. SET time_zone = 'Europe/Moscow';
SELECT created_at FROM logs;
Ставь 👍 и забирай 📚 Базу знаний