时区的坑:数据时间在不同数据库中差8小时、13小时、14小时是怎么回事 ...

打印 上一主题 下一主题

主题 688|帖子 688|积分 2064

为什么会同一条数据,会有小时差异

恭喜你,十有八九,就是时区的问题:
首先要明确的是,我们中国的标准时区是东八区,就是世界协调时间(UTC)加上八个小时,也就是UTC+8。
格林尼治标准时间
最坑的是美国时间,因为美国实行的是夏令时,也就是说美国是有两个时区在一天内来回切换,有几个月是西六区,有几个月是西五区

所以,当处理跨国公司,特别是美国的数据时,和我们相差13或14个小时都是正常的
如何处理呢?

很简单,确定好原始库的时区,再确定好目标库的时区,然后处理就可以了。
此时,第二个坑来了,请问,下面这个数据库的时区是哪里?

恭喜你,你获得了4个正确且标准的答案:

说它是美国时间、澳大利亚时间、中国时间、古巴时间,都对!那么这条数据到底是哪个时区呢?
1、直接问客户!
2、根据时间差来算一下。
到了重点了,体现到数据层面,该如何处理呢?
处理方式也很简单:
1、设置数据库时区保持一致
2、写数据时转换一下,比如hive和spark的set spark.sql.session.timeZone=GMT+8; 等
3、简单粗暴,直接加减,就是使用date_add之类的函数,直接把相差的那几个小时加回来或减回来

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

科技颠覆者

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表