MySQL datetime没有返回时间
我有一个MySQL数据库,其中包含一个包含datetime
列的表。
但是,我无法在Java中找到一种方法将其作为Java中的某种Time
对象返回。
我可以调用resultset.getString("Date")
并返回datetime
,但这并不好,因为没有办法比较字符串上的日期等。
我也可以调用resultset.getDate("Date")
,但这根本不会返回时间。
您需要使用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);
如果要使用Java日期对象:
java.util.Date dbSqlTimeConverted = new java.util.Date(dbSqlTime.getTime()); java.util.Date dbSqlDateConverted = new java.util.Date(dbSqlDate.getTime());
我还要查看JodaTime与Java中的日期合作,让生活变得更加简单。
最后,值得注意的是MySQL中的Timestamp和DateTime之间存在一些差异。 即Timestamp有一个时区,服务器将在服务器的本地时间返回一个查询的时间戳(这可能很烦人)。 我的建议是使用DateTime并始终将日期/时间保持在同一时区(即UTC)。 请参阅http://dev.mysql.com/doc/refman/5.0/en/datetime.html
只是为了澄清,在查询Mysql时,只有getTimesStamp()会一次性返回日期和时间:
专栏:startTime:值:2014-09-29 20:49:41
Java的:
java.sql.Timestamp dbSqlTimestamp = rs.getTimestamp("startTime"); System.out.println("dbSqlTimestamp="+dbSqlTimestamp);
输出:dbSqlTimestamp = 2014-09-29 20:49:41.0