调用JDBC的preparedStatement中的setDate()方法时出现显示日期少一天的情况,比如设定的是2021-11-11,实际显示是2021-11-10
pps = connection.prepareStatement("insert into airInfo values (?,?,?,?)");
pps.setInt(1,2);
pps.setString(2,"002");
pps.setString(3,"Shanghai");
pps.setDate(4, Date.valueOf("2021-11-11"));
造成此情况的原因是url中时区设置的是UTC,即Universal Time Coordinated(协调世界时间),可将url的时区改为Asia/Shanghai。
// jdbc:mysql://hostname:3306/databaseName?serverTimezone=UTC 改为:
jdbc:mysql://hostname:3306/databaseName?serverTimezone=Asia/Shanghai