首页 > 数据库 > mysql教程 > 对于MySQL在保存时间信息上的建议

对于MySQL在保存时间信息上的建议

little bottle
发布: 2019-04-10 13:37:12
转载
2165 人浏览过

在网上看到有网友说自己最近在和印度的SP在核对统计数据的过程中,发现统计的数据存在时区的问题。本文主要是就以上问题作出的解决。他给对方提供的接口获取指定date的统计结果,是按照中国的时区来控制的。庆幸的是在数据库中存储的是国际时间戳,因此只需要在接口处确定调用方是哪个时区的即可获取正确的统计结果信息。

解决方案参考如下,即在SimpleDateFormat对象基础上需要明确当前需要使用的时区是什么。

SimpleDateFormat.setTimeZone(TimeZone);

// Java:
long timeMs = System.currentTimeMillis();
System.out.println("long = " + timeMs);

// current time zone
SimpleDateFormat default = new SimpleDateFormat("yyyy-MM-dd HH:mm");
System.out.println(default.format(timeMs));

// +8:00 time zone
SimpleDateFormat chinaFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
chinaFormat.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
System.out.println("GMT+8:00 = " + chinaFormat.format(timeMs));

// +5:30 time zone
SimpleDateFormat indiaFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
indiaFormat.setTimeZone(TimeZone.getTimeZone("GMT+5:30"));
System.out.println("GMT+5:30 = " + indiaFormat.format(timeMs));
登录后复制

使用如上方法其实就可以解决时区问题,由于我当时获取统计数据是通过小时表获取的且小时表是一小时一条记录。而印度时区为GMT+5:30,在当前表结构的基础上会存在半小时数据偏差的问题,因此为了解决该问题我们修改小时表的统计粒度为半小时。

总结:

该博客只是简单的说出重点的解决时区的方案,在使用该方案的前提是数据库中存储的是国际时间戳!!!

只有基于绝对时间戳的时间存储,从根本上就没有时区的问题!!!时区只是一个显示问题!!!

每天进步一点点~

【推荐课程:MySQL视频教程

以上是对于MySQL在保存时间信息上的建议的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:csdn.net
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板