java中的日期时间

java中的日期时间,java,jdbc,Java,Jdbc,我在Mysql数据库中插入了一个JDBC当前日期和时间 它将当前日期和固定时间作为2012/05/25 00:00:00提交到Mysql日期类型字段中。日期部分工作得很好,但时间没有显示任何值 我使用以下代码插入值: java.util.Date myDate = new java.util.Date(); java.sql.Date sqlDate = new java.sql.Date(myDate.getTime()); PreparedStatement PStmt = con.prep

我在Mysql数据库中插入了一个JDBC当前日期和时间

它将当前日期和固定时间作为
2012/05/25 00:00:00
提交到Mysql日期类型字段中。日期部分工作得很好,但时间没有显示任何值

我使用以下代码插入值:

java.util.Date myDate = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date(myDate.getTime());
PreparedStatement PStmt = con.prepareStatement(Sql query);
PStmt.setDate(1,sqlDate);

我认为您需要在mysql中使用timestamp作为列类型。

我建议注意
java.util.Date
java.sql.Date

Date CreatedDate= new Date(System.currentTimeMillis());

编辑还要确保数据库中的数据类型正确(日期、日期时间或时间戳)

1)在java类中使用
java.util.Date

2) 在mysql中设置datatye
时间戳

Date CreatedDate= new Date(System.currentTimeMillis());
对于PreparedStatement:可能是这样的:

PreparedStatement PStmt = con.prepareStatement(Sql query);
PStmt.setDate(1,CreatedDate);

使用
java.sql.Timestamp
而不是
java.util.Date

例如,如果您正在使用
PreparedStatement
处理插入,则可以将日期传递为

java.util.Date date = new Date();
pst.setTimestamp(columIndex, new java.sql.Timestamp(date.getTime()));

虽然这是一篇老文章,但答案很简单,取决于您的需求-根据您的需求,使用DATETIME数据类型并使用以下内容

java.util.Date date = new Date();
pst.setTimestamp(columIndex, new java.sql.Timestamp(date.getTime()).getTime());
让我们从数据库和jdbc两方面来了解原因

从数据库中的数据类型开始,选择适当的数据类型。最适合你的是DATETIME,你想要的是date和hour/min/sec。DATETIME类型用于存储挂钟时间,而时间戳用于固定时间点(历元后的几毫秒)。两者在MySQL中的内部存储方式也有所不同


现在,当您来到JDBC端时,您有了日期(仅日期部分)、时间戳(日期和时间)和时间(仅时间)的API方法。这就是JDBC所能提供的一切。现在,适合您需要的API是setTimestamp

您能粘贴插入日期的代码吗?您在数据库中使用了什么类型的列?java.util.Date myDate=new java.util.Date()
java.sql.Date sqlDate=new java.sql.Date(myDate.getTime())
PreparedStatement PStmt=con.prepareStatement(Sql查询)
PStmt.setDate(1,sqlDate);MySQL中的列类型是什么?@Narayan:不要使用java.sql.Date。插入java.util.Date。这个createdDateIt的准备语句应该是什么?它对我不起作用,因为它浪费了时间。使用java.sql.Timestamp代替setTimestamp(…)+1:问题是
java.sql.Date
只是一个日期,因此丢弃时间组件。当我试图执行insert语句时,它显示错误,即,当我使用pstmt.executeupdate()时,它显示错误;您没有指定要得到的错误,我假设它要求的是参数的长度-请参阅编辑的答案。使用
System.out.println(new java.sql.Timestamp(date.getTime())调试您的时间
如果这为您提供了正确的值,那么假设问题是数据库表上保存的数据类型,以保存
datetime
。最后一个
.getTime()
是否应该在
新java.sql.Timestamp(date.getTime()).getTime()中?