Один из способов - создать еще один столбец для хранения часового пояса отдельно:
CREATE TABLE friends_details (name VARCHAR(255),
last_contact DATETIME,
timezone VARCHAR(3));
INSERT INTO friends_details VALUES
('Bob', '2018-09-06 04:23:51', 'BST');
INSERT INTO friends_details VALUES
('Eszter', '2018-01-21 17:24:06', 'CET');
INSERT INTO friends_details VALUES
('Sue', '2018-09-01 11:18:21', 'EDT');
INSERT INTO friends_details VALUES
('Jack', '2018-02-27 23:11:47', 'UTC');
Обратите внимание , что в коде вашего приложения (например, PHP) вы можете выполнять строковые операции с датой-временем (с часовым поясом) и извлекать часовой пояс отдельно для Insert
запроса.
Однако общая практика заключается в том, чтобы хранить время в UTC, а во втором столбце хранить фактический разрыв часового пояса с UTC (в часах).
Например:
CREATE TABLE friends_details (name VARCHAR(255),
last_contact_utc DATETIME,
timezone_gap decimal(5,2));
-- CET is UTC + 1, so the time in UTC will be CET - 1
INSERT INTO friends_details VALUES
('Eszter', '2018-01-21 16:24:06', 1);
-- EDT is UTC - 4, so the time in UTC will be EDT + 4
INSERT INTO friends_details VALUES
('Sue', '2018-09-01 15:18:21', -4);
INSERT INTO friends_details VALUES
('Jack', '2018-02-27 23:11:47', 0);
Теперь выполнение операций для вычисления разницы между датой и временем стало проще, не беспокоясь о разрыве (-ах) часового пояса. Для отображения вы можете просто получить оба столбца и соответственно изменить его на соответствующий часовой пояс.