我试图在JDBC代码中检索并处理MySQL计算的DATE值。这里有一个小片断:JDBC和MySQL DATE关闭 - 如何更正
MysqlDataSource ds = new MysqlDataSource();
ds.setServerName("myservername");
ds.setUser("myusernamne");
ds.setPassword("******");
ds.setDatabaseName("mydbname");
ds.setUseJDBCCompliantTimezoneShift(true);
ds.setUseLegacyDatetimeCode(false);
Connection con = ds.getConnection();
PreparedStatement p = con.prepareStatement("select last_day('2014-01-15')");
ResultSet rs = p.executeQuery();
rs.next();
Date date = rs.getDate(1);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(df.format(date));
我希望它可以打印2014-01-31
而是它打印2014-01-30
。为什么,我能做些什么呢?运行我的JVM的机器位于美国东部地区,数据库采用UTC,但我想我所设置的参数仍然可以正确处理。
万一它很重要我正在运行MySQL 5.5和mysql-connector-java版本5.1.16。
我在MySQL Workbench中获得2014-01-31。你直接执行查询的结果是什么? – demongolem
事实上,我也直接获得了2014-01-31(我使用Sequel Pro只是为了多样化)。我的问题不是关于MySQL隔离,而是关于MySQL和JDBC在一起。 – Dan