为什么dateTime mysql列上的java.sql.PreparedStatement#setDate
总是导致日期格式如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的值。
答案 0 :(得分:3)
根据java.sql.Date
的文档:
一个围绕毫秒值的瘦包装器,允许JDBC将其标识为SQL DATE值。 [...]
为了符合SQL DATE的定义,java.sql.Date实例包含的毫秒值必须通过在特定时区中将小时,分钟,秒和毫秒设置为零来“标准化”。实例是关联的。
基本上,对于datetime列,您可能应该使用其他类型,例如Timestamp
。 (这在其他方面并不理想,但它可能更适合......)
答案 1 :(得分:0)
java.sql.Date只是一个日期 - 没时间。不要将它与java.util.Date混淆,后者包括时间信息。您可能想查看java.sql.Timestamp。
答案 2 :(得分:0)
它基于表格列的数据类型。根据数据库服务器尝试使用TimeStamp
或Time
。