2011-12-12 146 views
1

如何將Java時間戳(時間戳數據類型)轉換爲MySQL時間戳反之亦然?將Java時間戳轉換爲MySQL時間戳反之亦然

+0

這在Java中並不複雜。你使用哪個框架來訪問數據庫? – flesk

+0

我現在不使用任何框架 – bbnn

+0

請向我們展示給您帶來問題的代碼,並告訴我們問題是什麼。正如答案所說,不需要轉換*。 'java.sql.TimeStamp'應該直接映射到MySQL'TIMESTAMP'類型。 –

回答

5

如果您正在使用JDBC API來訪問數據庫,您使用的是PreparedStatement到例如執行SQL INSERT語句,那麼你剛纔設置的時間戳作爲參數傳遞給PreparedStatement

Timestamp ts = ...; // wherever you get this from 

PreparedStatement ps = connection.prepareStatement("INSERT INTO MYTABLE (ts) VALUES (?)"); 
ps.setTimestamp(1, ts); 
ps.executeUpdate(); 

同樣,當您正在做一個返回時間戳的查詢時,通過調用getTimestamp來從ResultSet得到它。例如:

Timestamp result = null; 

Statement st = connection.createStatement(); 
ResultSet rs = st.executeQuery("SELECT ts FROM MYTABLE WHERE ..."); 
if (rs.next()) { 
    result = rs.getTimestamp(1); 
} 

請參閱JDBC Tutorial

+0

謝謝,我想要做的是,當我從MySQL加載數據時,我想將它設置爲一個對象,該對象在mysql中具有ctime(TIMESTAMP),在java – bbnn

+0

@bn中具有ctime(Timestamp),如果您要提取數據在使用JDBC ResultSet時,您將需要使用getTimestamp()方法。 –

3

沒有關於您遇到麻煩的更多細節,這將是一個難以回答的問題。但是,如果您使用準備好的語句,Java使得這相對簡單明瞭。你的代碼看起來是這樣的:

Connection conn = getConnection(); 
PreparedStatement pStmt = conn.prepareStatement("UPDATE my_table SET my_column = ? WHERE id = ?"); 
pStmt.setTimestamp(1, new Timestamp(System.currentTimeMillis())); 
pStmt.setInt(2, 42); 
pStmt.executeUpdate();