我需要将当前日期和时间(毫秒)插入MySQL。我做了以下事情:
long time = System.currentTimeMillis();
java.sql.Timestamp timestamp = new java.sql.Timestamp(time);
System.out.println("Time in milliseconds :" + timestamp);
我正确地得到了毫秒的时间(例如2013-03-21 00:08:33.523)。但是,我需要将此信息插入MySQL数据库。我使用PreparedStatement
prepStmt.setTimestamp(2,timestamp);
但是插入的时间没有毫秒(例如2013-03-21 00:08:33)。
如何以毫秒插入时间。
编辑:数据库中的列属于DATETIME
类型。
答案 0 :(得分:9)
java.util.Date date = new java.util.Date();
java.sql.Timestamp timestamp = new java.sql.Timestamp(date.getTime());
preparedStatement.setTimestamp(1, timestamp);
答案 1 :(得分:2)
该列的类型为DATETIME,使用PreparedStatement的setDate方法。
java.sql.Date date = new java.sql.Date(System.currentTimeMillis());
stmnt.setDate(1, date);
答案 2 :(得分:1)
您可以创建方法getCurrentTimeStamp()并从JDBC语句
中调用它了PreparedStatement.setTimestamp(4,getCurrentTimeStamp());
方法:
private static java.sql.Timestamp getCurrentTimeStamp(){
java.util.Date today = new java.util.Date();
return new java.sql.Timestamp(today.getTime());
}
答案 3 :(得分:0)
由于其他成员已正确回答了该问题,请允许我在数据库中添加一些关于日期类型存储的个人后见之明。
在个人层面上,我更喜欢以长格式存储日期信息。我发现之后存储和使用都更容易。不仅大多数语言提供了创建具有长参数的新日期,但您不会遇到预设格式,您将有机会以不同方式格式化它。例如,我必须在我开发的某个网站上将日期格式化为英语或法语格式,然后在某些语言参数上使用if-else更容易,并根据语言偏好应用给定格式。
然而,这种方法有一些缺点。您需要将其格式化为可读格式,比方说,自动报告由不会使用Java格式化的查询完成。
-----------------------------ADD CODE-----------------------------
// Stored as 0 if the date is not initialised
long time = objInscription.getDatePremierVisionnement() != null ?
objInscription.getDatePremierVisionnement().getTime() : 0;
-------------------------------GET CODE----------------------------
// long is store as 0 if the date has not been initialised
long long = rs.rsReadColumnLong(1);
if (long == 0) {
someobj.setSomeDate(null);
} else {
someobj.setSomeDate(new Date(long));
}
您可以轻松地使用SimpleFormat来显示数据。