【问题标题】:MySQL datetime not returning timeMySQL datetime 不返回时间
【发布时间】:2011-12-14 01:58:27
【问题描述】:

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

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

我可以调用resultset.getString("Date"),它会返回datetime,但这不好,因为无法比较字符串上的日期等。

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

【问题讨论】:

标签: java mysql sql


【解决方案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 之间存在一些差异。即 Timestamp 有一个时区,服务器将在服务器的本地时间返回一个查询的 Timestamp(这可能很烦人)。我的建议是使用 DateTime 并始终将日期/时间保持在同一时区(即 UTC)。见http://dev.mysql.com/doc/refman/5.0/en/datetime.html

【讨论】:

  • java.sql.Timestampjava.util.Date 的子类。您可以直接向上转换而不是重新创建它。
【解决方案2】:

澄清一下,只有 getTimesStamp() 会在查询 Mysql 时一次性返回日期和时间:

列:开始时间: 值: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

【讨论】:

    猜你喜欢
    • 2016-05-29
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多