mysql 数据库时间字段时区问题

场景

项目中出现服务器时间正确,数据库时间正确,但是插入数据的时候时间出现时区问题,这边做下记录

`onWork_time` datetime DEFAULT NULL COMMENT '上班时间',
  `offWork_time` datetime DEFAULT NULL COMMENT '下班时间',
onWork_timeoffWork_time
2018-11-29 00:03:172018-11-29 00:17:34

如上表格中,时间时有问题的,正确的时间应该是14点多

因为用的是相对最新版的5.7版本MySQL以及相对应的新版驱动jar包,因此这里的driver和url写法与以前的不太一样。
这是最新版驱动包相对于的写法配置

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://${mysql.address}/${mysql.schema}?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;allowMultiQueries=true&amp;zeroDateTimeBehavior=convertToNull"/>
        <property name="username" value="${mysql.username}"/>
        <property name="password" value="${mysql.password}"/>
        <property name="initialSize" value="10"/>
        <property name="minIdle" value="10"/>
        <property name="maxActive" value="20"/>
        <property name="maxWait" value="60000"/>
        <property name="timeBetweenEvictionRunsMillis" value="60000"/>
        <property name="minEvictableIdleTimeMillis" value="300000"/>
        <property name="validationQuery" value="SELECT 'x' FROM DUAL"/>
        <property name="testWhileIdle" value="true"/>
        <property name="testOnBorrow" value="false"/>
        <property name="testOnReturn" value="false"/>
        <property name="poolPreparedStatements" value="true"/>
        <property name="maxPoolPreparedStatementPerConnectionSize" value="20"/>
        <property name="filters" value="stat"/>
    </bean>

而以前版本的url写法只要jdbc:mysql://localhost:3306/ss 就够了。
修改为

 <property name="url" value="jdbc:mysql://${mysql.address}/${mysql.schema}?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;allowMultiQueries=true&amp;zeroDateTimeBehavior=convertToNull&amp;serverTimezone=GMT%2b8"/>

在后面加上&serverTimezone=GMT%2b8

//北京时间东八区
serverTimezone=GMT%2B8 
//或者使用上海时间
serverTimezone=Asia/Shanghai
  • 这个时区要设置好,不然会出现时差,
  • 如果你设置serverTimezone=UTC,连接不报错,
    但是我们在用java代码插入到数据库时间的时候却出现了问题。
  • 比如在java代码里面插入的时间为:2018-06-24 17:29:56
  • 但是在数据库里面显示的时间却为:2018-06-24 09:29:56
    有了8个小时的时差
  • UTC代表的是全球标准时间 ,但是我们使用的时间是北京时区也就是东八区,领先UTC八个小时
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值