MySQL datetime没有返回时间

Ror*_*ory 8 java mysql sql

我有一个MySQL数据库,其中包含一个包含datetime列的表.

但是,我无法在Java中找到一种方法将其作为TimeJava中的某种对象返回.

我可以打电话resultset.getString("Date"),它会返回datetime,但这并不好,因为没有办法比较字符串上的日期等.

我也可以打电话resultset.getDate("Date"),但这根本不会让时间恢复.

Nig*_*olf 8

您需要使用Thomas评论中建议的getTime()或getTimestamp()方法.举个例子......

比如说你查询的表是这样的: rs = stmt.executeQuery("select timeCol, dateCol, dateTimeCol from dateTimeTable");

你可以这样做:

java.sql.Time dbSqlTime = rs.getTime(1);
java.sql.Date dbSqlDate = rs.getDate(2);
java.sql.Timestamp dbSqlTimestamp = rs.getTimestamp(3);
Run Code Online (Sandbox Code Playgroud)

如果要使用Java日期对象:

java.util.Date dbSqlTimeConverted = new java.util.Date(dbSqlTime.getTime());
java.util.Date dbSqlDateConverted = new java.util.Date(dbSqlDate.getTime());
Run Code Online (Sandbox Code Playgroud)

我还要查看JodaTime与Java中的日期合作,让生活变得更加简单.

最后,值得注意的是MySQL中的Timestamp和DateTime之间存在一些差异.即Timestamp有一个时区,服务器将在服务器的本地时间返回一个查询的时间戳(这可能很烦人).我的建议是使用DateTime并始终将日期/时间保持在同一时区(即UTC).请参阅http://dev.mysql.com/doc/refman/5.0/en/datetime.html