我命由我,不由天!


  • 搜索
prometheus docker golang linux kubernetes

mysql时区问题

发表于 2021-05-27 | 分类于 mysql | 0 | 阅读次数 353

问题

在项目开发中经常需要用到timestamp来表示时间,一般当前时间都会用数据库默认的current_timestamp来自动生成,而当数据库设置了时区而没用UTC来表示时间的时候,往往会相差8小时

形成原因

查看时区命令

show VARIABLES like '%time_zone%';

image.png

GMT、UTC、DST、CST时区代表的意义

GMT:Greenwich Mean Time

格林威治标准时间 ; 英国伦敦格林威治定为0°经线开始的地方,地球每15°经度 被分为一个时区,共分为24个时区,相邻时区相差一小时;例: 中国北京位于东八区,GMT时间比北京时间慢8小时。

UTC: Coordinated Universal Time

世界协调时间;经严谨计算得到的时间,精确到秒,误差在0.9s以内, 是比GMT更为精确的世界时间

DST: Daylight Saving Time

夏季节约时间,即夏令时;是为了利用夏天充足的光照而将时间调早一个小时,北美、欧洲的许多国家实行夏令时;

CST:Central Standard Time

Tips 时间戳:表示从1970年1月1日 00:00:00到现在所经历的秒数,与时区无关

Central Standard Time (USA) UT-6:00 美国标准时间

Central Standard Time (Australia) UT+9:30 澳大利亚标准时间

China Standard Time UT+8:00 中国标准时间

Cuba Standard Time UT-4:00 古巴标准时间

一般系统的time.now() 获取的为utc时间,若数据库存的是含时区的,则会快8个小时,所以时区需要匹配对,全部用UTC或者当地时间

解决

挂载时区文件,全部用北京时间,或者数据库存放UTC时间

        volumeMounts:
          - name: timezone
            mountPath: /etc/localtime
      volumes:
        - name: timezone
          hostPath:
            path: /usr/share/zoneinfo/Asia/Shanghai
  • 本文作者: Dante
  • 本文链接: https://gaodongfei.com/archives/m-y-s-q-l-shi-qu-wen-ti
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
链表相关
redis 五种基础结构(一)
  • 文章目录
  • 站点概览
Dante

Dante

119 日志
5 分类
5 标签
RSS
Creative Commons
0%
© 2023 Dante
由 Halo 强力驱动
|
主题 - NexT.Pisces v5.1.4
沪ICP备2020033702号