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


本文摘自PHP中文网,作者little bottle,侵删。

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

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

SimpleDateFormat.setTimeZone(TimeZone);

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

// 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在保存时间信息上的建议的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

mysql支持分布式吗

mysql实现查看与创建以及删除索引的方法介绍

mysql怎么设置登录的密码

mysql 如何查看是否自动提交

mysql 中行转列的方法

mysql中blob字段过多怎么办

mysql只能做小项目?是时候说几句公道话了!

mysql数据库索引操作总结

mysql数据库绿色版出现系统错误1067怎么办?

mysql约束(创建表时的各种条件说明)

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    正在狠努力加载,请稍候...