2010-09-09 185 views
23

我想在我的数据库中使用java设置一个时间戳,但是在我的表中,我所得到的只是日期,没有时间(即看起来像“2010-09-09 00:00:00”)。如何使用java设置完整的日期和时间sql,而不仅仅是日期?

我在我的mysql数据库上使用datetime字段(因为它的appears表示datetime is more common than timestamp)。我设置日期的代码如下所示:

PreparedStatement ps = conn.prepareStatement("INSERT INTO mytable (datetime_field) VALUES (?)") 
java.util.Date today = new java.util.Date(); 
java.sql.Date timestamp = new java.sql.Date(today.getTime()); 
ps.setDate(1, timestamp); 
ps.executeUpdate(); 

如何设置包含时间的日期?

编辑:我改变了代码按照下面,它设置日期和时间。

PreparedStatement ps = conn.prepareStatement("INSERT INTO mytable (datetime_field) VALUES (?)") 
java.util.Date today = new java.util.Date(); 
java.sql.Timestamp timestamp = new java.sql.Timestamp(today.getTime()); 
ps.setTimestamp(1, timestamp); 
ps.executeUpdate(); 

回答

28

使用java.sql.TimestampsetTimestamp(int, Timestamp)java.sql.Date是日止,不管列的类型的它被存储在。

4

不清楚自己需要使用什么,但

ps.setDate(); 

预计日期的列类型。所以这是正常化,消除时间。

尝试

ps.setTimetamp(); 
-3

你可以使用:

private static String getTimeStamp() { 
    SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    return f.format(new Date()); 
} 
+2

你不应该处理字符串格式的日期/时间将它们保存到或从数据库中读取他们的时候。 JDBC的抽象例如'setTimestamp'和'getTimestamp'可以让这个不必要。 – ColinD 2010-09-09 14:51:16

+0

thx,我误读了,没有注意到sql。我的错误 – oyo 2010-09-09 14:59:26

相关问题