2015-09-08 77 views
1

我有一個表timestamptest,其中一列timestamp的類型爲timestamp without time zoneJava ResultSet.getTimestamp()將毫秒附加到輸出

我插入一個值,這個表:
insert into timestamptest values('2015-09-08 13:11:11')

時間戳不包含任何的毫秒數。
在pgAdmin中選擇該數據時,顯示與上述相同。

但是,當我使用jdbc連接獲取此數據時,顯示的值爲毫秒。

Class.forName("org.postgresql.Driver"); 
    Connection lConnection = null; 
    lConnection = DriverManager.getConnection(
     "jdbc:postgresql://localhost:5432/postgres","postgres", "[email protected]"); 
    String lQuery = "select * from timestamptest"; 
    Statement lStatement = lConnection.createStatement(); 
    ResultSet lResultSet = lStatement.executeQuery(lQuery); 
    while(lResultSet.next()) { 
     System.out.println(lResultSet.getTimestamp(1)); 
    } 

輸出:2015-09-08 13:11:11.0

所需的輸出是2015-09-08 13:11:11

它可以通過使用的SimpleDateFormat來實現:
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(lResultSet.getTimestamp(1).getTime())

它可以是可能的,而不使用的SimpleDateFormat?有沒有其他的方式可以讓結果集以我想要的格式給我?

我需要的是該語句 lResultSet.getTimestamp(1)
直接給我的輸出2015-09-08 13:11:11

+0

「*是否可能不使用SimpleDateFormat *?」 - 沒有。這是如何定義'java.sql.Timestamp'上的'toString()'方法:http://docs.oracle.com/javase/7/docs/api/java/sql/Timestamp.html#toString%28 %29 –

回答

0

它是不可能的。由於ResultSet.getTimestamp(1)返回的類延伸java.sql.TimeStamp。基於數據庫驅動程序返回課程。而且我們也不能改變toString的實現。

0

是的,你可以 - 但你不會喜歡它。

class MyTimestamp extends Timestamp { 

    public MyTimestamp(long time) { 
     super(time); 
    } 

    public MyTimestamp(Timestamp ts) { 
     this(ts.getTime()); 
    } 

    @Override 
    public String toString() { 
     String s = super.toString(); 
     return s.substring(0, s.lastIndexOf(".")); 
    } 
} 

public void test() { 
    System.out.println("Hello"); 
    Timestamp t = new Timestamp(System.currentTimeMillis()); 
    System.out.println(t); 
    System.out.println(new MyTimestamp(t)); 

}