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

在网上看到有网友说自己最近在和印度的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,在当前表结构的基础上会存在半小时数据偏差的问题,因此为了解决该问题我们修改小时表的统计粒度为半小时。总结:

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

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

每天进步一点点~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值