2011-12-12 143 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();