10

我有一个 JDBC 当前日期和时间插入 Mysql 数据库。

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

我使用以下代码插入值:

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);
4

5 回答 5

19

使用java.sql.Timestamp代替java.util.Date

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

java.util.Date date = new Date();
pst.setTimestamp(columIndex, new java.sql.Timestamp(date.getTime()));
于 2012-05-25T10:37:37.887 回答
2

我认为您需要将时间戳作为 mysql 中的列类型。

于 2012-05-25T10:24:14.133 回答
2

java.util.Date我建议注意和之间的区别java.sql.Date

java.util.Date 与 java.sql.Date

编辑还确保您在数据库中具有正确的数据类型(DATE、DATETIME 或 TIMESTAMP)

http://dev.mysql.com/doc/refman/5.1/en/datetime.html

于 2012-05-25T10:26:07.537 回答
1

虽然是旧帖子,但答案很简单,取决于您的要求 - 根据您的要求使用 DATETIME 数据类型并使用以下

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

让我们从数据库和jdbc这两个方面来看看推理。

从数据库中的数据类型开始,选择合适的一种。完全适合您的情况的一个是 DATETIME,因为您想要日期和小时/分钟/秒。DATETIME 类型用于存储挂钟时间,而 TIMESTAMP 用于固定时间点(纪元后几毫秒)。两者在 MySQL 内部的存储方式也有所不同。

现在,当您来到 JDBC 端时,您拥有 Date(仅日期部分)、Timestamp(日期和时间)和 Time(仅时间)的 API 方法。这就是 JDBC 必须提供的全部内容。所以现在,适合您需要的 API 是 setTimestamp

于 2013-10-25T19:57:30.533 回答
0

1)java.util.Date在你的java类中使用。

2)TIMESTAMP在mysql中设置数据类型。

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

对于 PreparedStatement:可能是这样的:

PreparedStatement PStmt = con.prepareStatement(Sql query);
PStmt.setDate(1,CreatedDate);
于 2012-05-25T10:34:12.867 回答