mysql 数据库时间字段时区问题
2018-11-29 16:43
239 查看
场景
项目中出现服务器时间正确,数据库时间正确,但是插入数据的时候时间出现时区问题,这边做下记录
`onWork_time` datetime DEFAULT NULL COMMENT '上班时间', `offWork_time` datetime DEFAULT NULL COMMENT '下班时间',
onWork_time | offWork_time |
---|---|
2018-11-29 00:03:17 | 2018-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&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&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&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&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八个小时
相关文章推荐
- 数据库获取时间的时区问题以及getTimestamp和getDate的坑
- mysql设置数据库字段类型,保存时自动获取数据库服务器时间
- mysql中修改数据库,数据库表,数据库表字段的编码问题
- 解决SQL Server 2005数据库中datetime时间字段在前端显示时分秒的问题
- Mysql根据数据库的时间字段到点更新另外的状态。
- django学习——Django models通过DateTimeField保存到MySQL的时间的时区问题
- 普元 EOS Platform 7.6 Mysql5.0 表里字段有默认值为0000-00-00 00:00:00的时间戳,查询数据库表对应的实体报错
- 关于mysql下hibernate实体类字段与数据库关键字冲突的问题
- centos系统的时间时区和MySQL的时间时区问题
- mysql多个时间戳字段默认值问题
- mysql和sql时间 字段比较大小的问题
- Django models通过DateTimeField保存到MySQL的时间的时区问题
- Python Django MySQL,时区、日期、时间戳(USE_TZ=True时的时间存储问题)
- jdbc 通过rs.getString()获取数据库中的时间字段问题
- Django models通过DateTimeField保存到MySQL的时间的时区问题
- 数据库中只有一个时间字段,查找一个时间段的数据问题(mybits)
- 一次因“CST”时区协商问题导致数据库时间戳错误的 debug 经历
- centos系统的时间时区和MySQL的时间时区问题
- 老大叫我改主数据库(MySQL)的时间!!!--UTC问题
- 解决linux centos 数据库mysql 时间不同步问题