Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java在MySQL中插入当前时间_Java_Mysql - Fatal编程技术网

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

如何使用Java在MySQL中插入当前时间,java,mysql,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)。但是,我需要将这些信息插入M

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

如果该列为DATETIME类型,请使用PreparedStatement的setDate方法

java.util.Date date = new java.util.Date();
java.sql.Timestamp timestamp = new java.sql.Timestamp(date.getTime());
preparedStatement.setTimestamp(1, timestamp);
java.sql.Date date = new java.sql.Date(System.currentTimeMillis());
stmnt.setDate(1, date);

由于其他成员已经正确回答了这个问题,让我补充一些关于数据库中日期类型存储的个人后见

就个人而言,我更喜欢以长格式存储日期信息。我发现它更容易储存和使用后。不仅大多数语言都提供了使用长参数创建新日期的功能,而且您不会被预设格式所束缚,您将有机会使用不同的格式。例如,在我开发的某个网站上,我必须将日期格式设置为英语或法语格式,这样就更容易在某些语言参数上设置if-else-if,并根据语言偏好应用给定格式

然而,这种方法有一些缺点。您需要将其重新格式化为可读格式,例如,由不使用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来显示数据。

您可以创建一个方法getCurrentTimeStamp(),并从JDBC语句调用它

setTimestamp(4,getCurrentTimeStamp())

方法:

私有静态java.sql.Timestamp getCurrentTimeStamp(){


}

@PermGenError你知道时间戳是以秒为基础的,对吗?请查看\u UNIXTIME()我认为Datetime不支持毫秒!不正确,因为我插入的变量是Timestamp类型。我遇到两个问题。首先,它将时间插入为:00:00:00。其次,它不会以毫秒为单位计算时间。哦,你说得对。Date实际上将小时、分钟等归零。您使用的是什么版本的MySQL?DATETIME字段仅支持从版本5.6.4开始的小数秒,而mysql将丢弃小数秒。您可以只将long存储在数据库中,而不使用datetime字段。或升级到更高版本。升级无法解决此问题。你能用代码解释一下你提出的另一个解决方案吗。我不清楚你是什么意思?那只是额外的工作。在Java中从数据库提取日期时,您已经可以将其作为日期对象进行检索了,为什么还要自己这么做呢。我想大多数其他语言都支持直接从查询结果中生成日期对象,但我在这方面遇到了一些问题。我确实做错了什么,但另一方面,这对我必须做的事情来说已经足够好了。下次我去约会的时候,我会记住这一点。可能是因为我使用了错误的MySQL数据类型。
java.util.Date today = new java.util.Date();
return new java.sql.Timestamp(today.getTime());