【发布时间】:2015-10-15 08:59:21
【问题描述】:
我将测量值存储在 MySQL 数据库中。 测量值包含一个时间戳字段,该字段以下列格式存储时间戳:
2015-10-10 10:10:10.11(所以有两位数的毫秒)
在我的 Java 代码中,我通过以下方式检索该值:
resultSet.getTimestamp(id)
当我打印这个值时,它给了我:
2015-10-10 11:11:11.000000011
所以我想弄清楚为什么它会这样,以及我应该如何解决这个问题,以便获得正确的价值?
编辑:
当使用 select * from measurement
时,这些值在数据库中正确显示我猜它应该在 Java / JDBC 检索方式的某个地方。 getTimestamp 和 getString 都给了我相同的结果。
编辑 2:
resultSet = statement.executeQuery("select * from measurement");
Measurement m;
while(resultSet.next()) {
m = new Measurement(
resultSet.getString(1),
resultSet.getString(2),
resultSet.getDouble(4),
resultSet.getTimestamp(3));
System.out.println(m);
}
【问题讨论】:
-
您能否添加更多代码,我敢打赌您在某个时刻将时间戳存储在 long 或 double 中,然后您会失去精度......
-
您使用的是哪个版本的 MySQL?
-
@Tunaki 我正在使用 MySQL 5.6.26,因为我需要至少 5.6.4 来存储小数秒。
-
@Jordi Castilla 我还没有通过代码存储数据,我已经通过 PHPmyAdmin 手动插入了
-
根据您的最后一条评论:您很可能是正确的,因为 getTimestamp().getNano() 返回了我正在寻找的数字。因此,Java 以某种方式将小数部分转换为纳秒。,请粘贴您的 java 代码,该代码检索并从 sql 时间戳转换为 java Date....
标签: java mysql database timestamp