假设如下表:MySQL和时区
CREATE TABLE IF NOT EXISTS `test` (
`stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
当我运行的SQL语句:
SET time_zone = '+00:00';
INSERT INTO `test` (`stamp`) VALUES (CURRENT_TIMESTAMP);
在test
值是我的机器的本地时间而不是UTC。
根据MySQL的site
为TIMESTAMP列中的值是从当前时区 转换为UTC用于存储,并从UTC到当前时区 检索。
我在做什么错?我想用UTC日期/时间戳存储我的记录,并在用户的本地时区中检索它们。
“我想用UTC日期/时间戳存储我的记录,并在用户的本地时区中检索它们。” ---如果你使用时间戳 - mysql会自动完成。你不应该在乎如何存储日期,你只需要与它在所需时区返回的事实 – zerkms
虽然哪个时区?我会假设MySQL正在使用服务器的时区。我的用户将不会与我的服务器处于同一时区。我想我不需要告诉MySQL在某个时区给我返回值。相反,我只是接受它在我的服务器的时区,并从那里做转换? – StackOverflowNewbie
想知道如何做这样的事情:获取用户时区中下午3点到5点之间的所有记录。 – StackOverflowNewbie