Mysql 正在保存从 Java 应用程序输入提供的 1 天前的日期

sar*_*026 5 java mysql hibernate tomcat8

我在当前项目(生产)中使用以下规范

  1. 操作系统:CentOS 7
  2. 数据库:MySql
  3. 爪哇 8
  4. 休眠
  5. Tomcat 服务器 8

数据库位于与应用程序服务器不同的服务器中,但两者都在同一个局域网中。

mysql 表中的数据类型是:date仅用于存储日期和datetime用于随时间保存日期。

问题是 mysql 保存的每个日期比应用程序提供的日期早 1 天。到目前为止,我已经尝试了以下方法,但仍然没有运气:

  1. 我已将应用程序和数据库服务器的时区设置为 Asia/Dhaka,并从我的 Java 应用程序中检查了这一点。
  2. 我还在 tomcat 服务器(setenv.sh)文件中设置了时区。
  3. 我还通过 TRACE 在 log4j 属性文件中检查了从 hibernate 生成的 sql,其中日期也与输入日期相同。

我错过了什么?有人可以建议吗?

sar*_*026 2

感谢大家分享有关该问题的经验。

最后,我通过更改java web 应用程序serverTimezone中 mysql 连接字符串的属性解决了这个问题。dispatcher-servlet

<property name="url" value="jdbc:mysql://x.x.x..x:3306/dbname?characterEncoding=utf-8&amp;useSSL=false&amp;serverTimezone=Asia/Dhaka" /> 
Run Code Online (Sandbox Code Playgroud)