2

我的表中有一个来自 type 的列datetime,我正在使用 jdbc 将该列检索到我的 java 应用程序。

我的问题是,当我存储2014-05-13 23:49:18.150在我的数据库中时,它变成2014-04-13了我的 java 应用程序。

如何获取所有日期包括时间(房屋、秒、分钟)。

爪哇代码

callableStatement = con
                    .prepareCall("{call getStatusForOrder(?,?,?,?,?)}");
            callableStatement.setInt(1, order.getID());
            callableStatement.registerOutParameter(2, java.sql.Types.INTEGER);
            callableStatement.registerOutParameter(3, java.sql.Types.DATE);
            callableStatement.registerOutParameter(4, java.sql.Types.DATE);
            callableStatement.registerOutParameter(5, java.sql.Types.BIT);
            callableStatement.execute();
            int statusID = callableStatement.getInt(2);
            Date startTime = callableStatement.getDate(3);
            Date endTime = callableStatement.getDate(4);
            boolean isActive = callableStatement.getBoolean(5);
            System.out.println("IsActive = " + isActive);
            System.out.println("Start Date = " + startTime.toString());
4

4 回答 4

4

使用Timestamp而不是Date,两者datetimedatetime2映射到java.sql.Timestamp

请参阅文档

PS。不要忘记使用callableStatement.getTimestamp代替callableStatement.getDate.

http://docs.oracle.com/javase/6/docs/api/java/sql/CallableStatement.html#getTimestamp(int)

于 2013-05-14T09:32:42.783 回答
2

Use a DateFormat to display it.

  • SHORT is completely numeric, such as 12.13.52 or 3:30pm
  • MEDIUM is longer, such as Jan 12, 1952
  • LONG is longer, such as January 12, 1952 or 3:30:32pm
  • FULL is pretty completely specified, such as Tuesday, April 12, 1952 AD or 3:30:42pm PST.
于 2013-05-14T09:27:03.177 回答
1

Types.DATE表示只有日期组件而没有时间的 JDBC(和 SQL)数据类型。如果要包含时间部分,则需要使用Types.TIMESTAMP相关的get/setTimestamp(..)方法和类。java.sql.Timestamp

于 2013-05-14T10:40:49.297 回答
1

我认为您必须使用 Timestamp (如果我没记错的话,有一段时间没有编程 Java)而不是 Date

于 2013-05-14T09:27:55.693 回答