【发布时间】:2015-12-07 16:53:43
【问题描述】:
我正在访问数据库并使用 Spring 的 jdbcTemplate 获取表数据,它为我提供了每个记录的 Map 列表,如下所示:
List<Map<String, Object>> tableDataMap = this.jdbcTemplate.queryForList(this.sql, new Object[] { isModel });
现在,如果我看到 LST_UPDTD_TIME 列值的第一个映射是:-
LST_UPDTD_TIME=2015-09-08 11:24:45.0
但如果我尝试将它从 Object 转换为 java.sql.Timestamp,如下所示:-
(java.sql.Timestamp) mapRow.get("LST_UPDTD_TIME")
我得到的输出是:-
2015-09-08 00:00:00.0
谁能告诉我为什么从 Object 转换为 java.sql.Timestamp 时时间会丢失以及如何解决这个问题。
如果我执行:System.out.println(mapRow.get("LST_UPDTD_TIME").getClass());
获取输出为:class java.sql.Timestamp
数据库中的列类型也是 TIMESTAMP(6)。
谢谢
【问题讨论】:
-
如果 mapRow.get("LST_UPDTD_TIME").getClass() 打印什么?我遇到了一些类似的问题,我必须使用 new Date(x.getTime())。请记住,java.util.Date 包含日期和时间
-
如果 mapRow.get("LST_UPDTD_TIME").getClass() 打印什么? --> java.sql.Timestamp 正在打印。
-
您使用的是什么 RDBMS 和 JDBC 驱动程序?
-
不是答案,但你见过joda-time吗?我在 Hibernate 中使用它,它看起来很方便。
-
当我在
RowMapper<T>中调用resultSet.getDate("STARTTIME")而不是resultSet.getTimestamp("STARTTIME")时遇到了这个问题