java - Mysql是从Java应用程序的输入提供的保存日期提早1天的日期

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

  • 操作系统:CentOS 7
  • 数据库:MySql
  • Java 8
  • hibernate
  • tomcat服务器8

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

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

    问题是mysql保存的每个日期比应用程序提供的日期早1天。到目前为止,我已经尝试了以下方法,但是仍然没有运气:
  • 我已将应用程序和数据库服务器的时区都设置​​为Asia/Dhaka,并从我的Java应用程序中也进行了检查。
  • 我也已经在tomcat服务器(setenv.sh)文件中设置了时区。
  • 我还检查了TRACE在log4j属性文件中从TRACE hibernate 状态生成的sql,该日期也与输入日期相同。

  • 我想念什么?有人可以建议吗?

    最佳答案

    多谢大家分享您在此问题上的经验。

    最后,我通过在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" />