2014-02-14 36 views
0

我試圖存儲和加載java.util.Date與JDBC如何正確使用JDBC

讀/寫java.util.Date它存儲這樣

insertStmt.setTimestamp(1, new Timestamp(date.getTime())); 

和閱讀like that

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

java.lang.AssertionError: expected:<1392378420194> but was:<1392378420193> 

那是毫秒?

我的數據庫是Postgres的和fieldd是「時間戳沒有時區」

編輯: 這個問題可以被關閉,因爲存儲/檢索似乎是確定的,問題是,我是裝錯來自數據庫的行

+0

可能是在服務器上存儲時間的基礎數據類型的精確問題。 –

回答

0

相反,您可以做一件事,如果毫秒對您很重要,請嘗試將其轉換爲實際時間字符串,然後進行比較。您還需要從長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)); 
    } 
}