一尘不染

MySQL日期时间不返回时间

sql

我有一个包含表的MySQL数据库datetime

但是,我找不到在Java中将其作为Java中某种Time对象返回的方法。

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

我也可以打电话resultset.getDate("Date"),但这根本不返回时间。


阅读 255

收藏
2021-03-10

共1个答案

一尘不染

您需要使用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中使用Dates,使生活变得更加简单。

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

2021-03-10