在MySQL数据库中利用时间戳怎么跳过时区

  介绍

这篇文章给大家介绍在MySQL数据库中利用时间戳怎么跳过时区,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。


查看当前数据库时区

mysql>显示变量如“% time_zone %“;   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +   | | Variable_name |值   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +   | system_time_zone |中科|   | time_zone | +喂饲|   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +   2行集(0.30秒)

查看表结构

mysql>desc timestamp_test;   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   | |字段类型零额外默认关键| | | | |   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   int id | | |没有零| | PRI | auto_increment |   零| | created_time | datetime |是| | |   零| | created_at |时间戳|是| | |   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   3行集(0.26秒)

插入数据

mysql>插入timestamp_test (created_time created_at)值(& # 39;2020-12-09 08:00:00& # 39;,& # 39;2020-12-09 08:00:00& # 39;);   查询好了,1行影响(0.22秒)         mysql>从timestamp_test select *;   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - +   | | id created_time | created_at |   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - +   | 1 | 2020-12-09 08:00:00 | 2020-12-09 08:00:00 |   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - +   1行集(0.06秒)

这个时间看起来是没问题的,那么我们尝试修改时区再插入数据

mysql>设置time_zone=? 00:00";   查询好,0行影响(0.03秒)      mysql>插入timestamp_test (created_time created_at)值(& # 39;2020-12-09 08:00:00& # 39;,& # 39;2020-12-09 08:00:00& # 39;);   查询好了,1行影响(0.03秒)      mysql>设置time_zone=? 08:00";   查询好,0行影响(0.04秒)

这时候再查看数据,两条插入的SQL代码 <代码>是一样的,但是发现查询的结果是不一样的
这两条数据<代码> created_at> mysql>从timestamp_test select *;   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - +   | | id created_time | created_at |   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - +   | 1 | 2020-12-09 08:00:00 | 2020-12-09 08:00:00 |   | 2 | 2020-12-09 08:00:00 | 2020-12-09 16:00:00 |   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - +   2行集(0.06秒)

再看一下实际存储的时间戳,然后我们变化时区,发现字段时间变化了,但是原始的时间戳数据没变

mysql>从timestamp_test select *, unix_timestamp (created_at);   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   | | id created_time | created_at | unix_timestamp (created_at) |   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   | 1 | 2020-12-09 08:00:00 | 2020-12-09 08:00:00 | 1607472000 |   | 2 | 2020-12-09 08:00:00 16:00:00 | 2020-12-09 | 1607500800 |   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   2行集(0.06秒)      mysql>设置time_zone=? 00:00";   查询好,0行影响(0.09秒)      mysql>显示变量如“% time_zone %“;   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +   | | Variable_name |值   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +   | system_time_zone |中科|   | | time_zone | + 00:00   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +   2行集(0.08秒)      mysql>从timestamp_test select *, unix_timestamp (created_at);   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   | | id created_time | created_at | unix_timestamp (created_at) |   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   | 1 | 2020-12-09 08:00:00 | 2020-12-09就是| 1607472000 |   | 2 | 2020-12-09 08:00:00 | 2020-12-09 08:00:00 | 1607500800 |   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   2行集(0.18秒)

在MySQL数据库中利用时间戳怎么跳过时区