如何使用JDBC正确读取/写入java.util.Date

如何使用JDBC正确读取/写入java.util.Date,java,date,jdbc,timestamp,Java,Date,Jdbc,Timestamp,我试图用JDBC存储和加载java.util.Date 它是这样储存的 insertStmt.setTimestamp(1, new Timestamp(date.getTime())); 像这样读 ResultSet q; Assert.assertEquals(t.getTime().getTime(), q.getTimestamp("time").getTime()); java.lang.AssertionError: expected:<1392378420194>

我试图用JDBC存储和加载java.util.Date

它是这样储存的

insertStmt.setTimestamp(1, new Timestamp(date.getTime()));
像这样读

ResultSet q;
Assert.assertEquals(t.getTime().getTime(), q.getTimestamp("time").getTime());

java.lang.AssertionError: expected:<1392378420194> but was:<1392378420193>
ResultSet q;
Assert.assertEquals(t.getTime().getTime(),q.getTimestamp(“时间”).getTime());
java.lang.AssertionError:应为:但为:
毫秒在哪里

我的数据库是postgres,字段D是“没有时区的时间戳”

编辑:
这个问题可以解决,因为存储/检索似乎没有问题,问题是我从数据库加载了错误的行。相反,您可以做一件事,如果毫秒对您来说很重要,请尝试将其转换为实际时间字符串,然后进行比较。您还需要从长ms值中提取日期

package com.date;

public class CovertFromLong {
    public static void main(String[] args) {
        long ms = 1392378420194L;
        long sec = (ms / 1000) % 60;
        long min = (ms / (1000 * 60)) % 60;
        long hr = (ms / (1000 * 60 * 60)) % 24;
        System.out.println(String.format("%02d:%02d:%02d:%d", hr, min, sec, ms));
    }
}

在服务器上存储时间的基础数据类型可能存在精度问题。