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

时间:2014-02-14 11:51:26

标签: 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> but was:<1392378420193>

那里是毫秒?

我的数据库是postgres,而fieldd是&#34;时间戳没有时区&#34;

编辑: 这个问题可以关闭,因为存储/检索似乎没问题,问题是我从数据库加载了错误的行

1 个答案:

答案 0 :(得分:0)

相反,您可以做一件事,如果毫秒对您很重要,请尝试将其转换为实际时间字符串然后进行比较。您还需要从long 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));
    }
}