如何使用Java在MySQL中插入当前时间

时间:2013-03-20 21:10:08

标签: java mysql

我需要将当前日期和时间(毫秒)插入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类型。

4 个答案:

答案 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来显示数据。