如何使用Java在MySQL中插入当前时间
我需要将当前日期和时间(毫秒)插入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
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());