文档章节

java取出mysql时间字段,相差数个小时

 青竹风
发布于 2017/03/17 09:45
字数 615
阅读 255
收藏 0

#情景描述
以Mysql作为数据库的JavaWeb项目,对于Mysql中的Time,Date,DateTime类型,Java的对应类型都是Date。Java程序在存储和读取相应字段的数据的时候,有时候会发现,存进去的不是预期的时间值,或者读取出来后发现和实际预期的会有偏差。举个例子,想要操作存储的时间是2017-01-01 08:00:00,但是实际呈现出来的是2017-01-01 08:00:00,差了8小时有没有?这个会根据不同情况有所相差,一般都差一些个小时数,对应的分和秒数据却是一致的。

#问题分析 mysql中发现存的确实是2017-01-01 08:00:00,但是Java中读取中到对应的Entity中时就自动变成2017-01-01 16:00:00,这个从数据库中读取出来就没有经过其他程序的任务处理直接就变动了。分析可能就是因为Web服务器上的时区/时间和Mysql服务器时区时间不一致。

1.可能JavaWeb项目中时区和Mysql时区不一致 在mysql中进入命令模式,敲入下面命令: show variables like '%time_zone%';通过该命令可以查看MySQL时区。

Java程序中,使用TimeZone.getDefault()

二者对比一下查看是否不同时区,不一致的情况下对时区进行调整到一致

2.上述时区一致时,还出现该情况,查查是否Java Web项目连接串中加了?servertimezone=utc,尝试去掉,再试试结果看看,这里网上有人说去掉后会出现无法识别timezone的乱码问题,建议不要使用mysql connector 6.0.x以上版本,要使用5.1.x的版本,并且不加上servertimezone。可能是个BUG

#问题解决 我遇到的情况是相差了八个小时,时区不一致,且改成一致了后还出现。其中解决方法是这样的:

show variables like '%time_zone%'; TimeZone.getDefault() 发现不一致,然后修改了Mysql的时区

修改Mysql时区命令

set time_zone='+8:00'; show variables like '%time_zone%';

查看后改变了,再运行,还是出现了问题

然后把mysql连接串servertimezone去掉也不行,换成GMT也不行

最后变成Asia/Shanghai或者PRC才可以,目前项目时间上正常了。

附上国际时区 TimeZone ID列表

© 著作权归作者所有

粉丝 0
博文 26
码字总数 10579
作品 0
厦门
私信 提问
【Mysql】利用Mybatis3连接mysql获取datetime类型数据错误

mysql版本:myql-connector-java-8.0.11.jar mybatis3连接数据库代码如下: 执行结果: OPTDATATIME为数据库实际结果(OPTDATATIME是转为字符串取出的数据)。OPT_DATETIME0为Java自动转类型...

大白来袭
2018/11/29
12
0
Mysql 时间差了 14 或 13 小时 com.mysql.cj.jdbc.Driver

查看mysql当前使用时区 show variables like '%time_zone%'; 解决办法 serverTimezone=CTT 排错过程 mysql-connector-java-8.0.13.jar 当 JDBC 与 MySQL 开始建立连接时 追踪代码可知,当 My......

夜黑人模糊灬
06/19
528
0
Java对日期Date类进行加减运算,年份加减,月份加减

Date d=new Date(); SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); System.out.println("今天的日期:"+df.format(d)); System.out.println("两天前的日期:" + df.format(new D......

mtfan
2014/12/11
8K
0
JAVA处理日期时间常用方法:

JAVA处理日期时间常用方法: 1.java.util.Calendar Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAYOFMONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字...

五大三粗
2014/12/24
139
0
mysql中时间数据差14小时

问题 调试代码中,确定了出来的时间数据是准确了,没有出现差14小时情况,通过Spring hibernate jdbc这一路保存到mysql数据库中,就出现了14小时问题。 排查 mysql排查 到这里,基本上排除了...

亚林瓜子
2018/12/18
449
0

没有更多内容

加载失败,请刷新页面

加载更多

3_数组

3_数组

行者终成事
31分钟前
3
0
经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
今天
10
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
今天
7
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部