2

为什么java.sql.PreparedStatement#setDatedateTime mysql 列上的结果总是像2012-10-16 00:00:00 没有时间信息的日期格式?我将 Date 存储在这样的循环中:

protected Date getIncrementedDateTime() {
    additionalTime += 1000;
    return new Date(System.currentTimeMillis() + additionalTime);
}


preparedStatement.setDate(j, new java.sql.Date(getIncrementedDateTime().getTime());

我调试了这些值,但 mysql 数据库总是有 2012-10-16 00:00:00 值。

4

3 回答 3

3

根据以下文档java.sql.Date

一个围绕毫秒值的瘦包装器,允许 JDBC 将其识别为 SQL DATE 值。[...]

为了符合 SQL DATE 的定义,由 java.sql.Date 实例包装的毫秒值必须通过在实例关联的特定时区中将小时、分钟、秒和毫秒设置为零来“规范化” .

基本上,对于日期时间列,您可能应该使用不同的类型,例如Timestamp. (这在其他方面并不理想,但它可能更适合......)

于 2012-10-16T15:41:06.537 回答
0

java.sql.Date 只是一个日期——没有时间。不要将它与包含时间信息的 java.util.Date 混淆。您可能想查看 java.sql.Timestamp。

于 2012-10-16T15:41:15.943 回答
0

它基于表列的数据类型。尝试使用TimeStampTime根据数据库服务器。

于 2012-10-16T15:44:12.987 回答