Mysql 保存日期比 java 应用程序输入的日期早 1 天
Mysql is saving date 1 day earlier date that provided from input from java application
我在当前项目(生产)中使用以下规范
- OS: 分OS 7
- 数据库:MySql
- Java 8
- 休眠
- tomcat 服务器 8
数据库与应用程序服务器位于不同的服务器中,但两者位于同一局域网中。
mysqltable中的数据类型是:date
仅用于存储日期,datetime
用于与时间一起保存日期。
问题是 mysql 每隔比应用程序提供的日期早 1 天保存一次。到目前为止,我已经尝试了以下方法,但仍然没有成功:
- 我已将应用程序和数据库服务器的时区设置为 Asia/Dhaka,并从我的 java 应用程序中也进行了检查。
- 我还在 tomcat 服务器 (setenv.sh) 文件中设置了时区。
- 我还在 log4j 属性文件中检查了 TRACE 从休眠生成的 sql,其中日期也与输入日期相同。
我错过了什么?有人可以建议吗?
感谢大家就此问题分享您的经验。
最后,我通过更改 java 网络应用程序 dispatcher-servlet
中 mysql 连接字符串的 serverTimezone
属性解决了这个问题。
<property name="url" value="jdbc:mysql://x.x.x..x:3306/dbname?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Dhaka" />
也许你可以尝试更改 serverTimezone
:
serverTimezone=GMT%2B8
我在当前项目(生产)中使用以下规范
- OS: 分OS 7
- 数据库:MySql
- Java 8
- 休眠
- tomcat 服务器 8
数据库与应用程序服务器位于不同的服务器中,但两者位于同一局域网中。
mysqltable中的数据类型是:date
仅用于存储日期,datetime
用于与时间一起保存日期。
问题是 mysql 每隔比应用程序提供的日期早 1 天保存一次。到目前为止,我已经尝试了以下方法,但仍然没有成功:
- 我已将应用程序和数据库服务器的时区设置为 Asia/Dhaka,并从我的 java 应用程序中也进行了检查。
- 我还在 tomcat 服务器 (setenv.sh) 文件中设置了时区。
- 我还在 log4j 属性文件中检查了 TRACE 从休眠生成的 sql,其中日期也与输入日期相同。
我错过了什么?有人可以建议吗?
感谢大家就此问题分享您的经验。
最后,我通过更改 java 网络应用程序 dispatcher-servlet
中 mysql 连接字符串的 serverTimezone
属性解决了这个问题。
<property name="url" value="jdbc:mysql://x.x.x..x:3306/dbname?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Dhaka" />
也许你可以尝试更改 serverTimezone
:
serverTimezone=GMT%2B8