码字,杂谈

MySql中timestamp创建日期的时区问题

在MySql中创建表的时候,经常需要创建一个创建日期字段,一般来说,在创建时我们使用timestamp直接可以生成该字段,并不用我们手动操作。

发现问题

CREATE TABLE t1(
    id int(11) primary key auto_increment,
    create_date timestamp default current_timestamp
)default charset=utf8;

这样就可以创建一个最简单的测试表:

《MySql中timestamp创建日期的时区问题》

然后我们添加一条测试数据:

INSERT INTO t1 (id) VALUES (1);

然后查询一下,发现了问题:

《MySql中timestamp创建日期的时区问题》

为了显示问题效果,我特意和当前时间截了图,timestamp创建的时间和我们相差好多,这是因为MySql默认使用美国东部时间,所以我们需要改变一下时区。

修改MySql的时区

在终端运行如下命令:

SET time_zone = '+8:00';  // 将时区改成我们的东八区
flush privileges; // 这是立即刷新使用

然后再次查询刚才创建的表:

《MySql中timestamp创建日期的时区问题》

我们欣喜的发现它已经自动变成我们想要的时间了,并不用我们手动去调整。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注