【发布时间】:2017-06-06 01:53:11
【问题描述】:
我在我的 MS SQL 数据库中使用DATETIME 来存储日期和时间。
Java 到数据库:preparedStatement.setTimestamp(2, insertObj.getTimestamp());
数据库到 Java:selectedObj.setTimestamp(result.getTimestamp("datetime"));
在我的单元测试中将它们与insertObj.timestamp.equals(selectedObj.timestamp); 进行比较随机返回真或假。
这是一个已知问题吗?我该如何解决?
【问题讨论】:
-
所以您的数据库列属于这种类型:
DATETIME,而您的 Java 变量属于这种类型:java.sql.Timestamp?还有什么 JDBC 驱动程序? -
@Basil Bourque 是的,这就是您将 DATETIME 值插入数据库的方式,JDBC 中没有“setDatetime()”或其他任何内容,JDBC 驱动程序将正确处理从时间戳到 DATETIME 的转换,它工作了一段时间,有时返回的时间戳与插入的时间戳相差 1ms
-
(A) 你实际上并没有回答我的问题。 (B) 我熟悉 JDBC 的工作原理。 (C) 将示例数据值添加到您的问题中。
-
您的所有答案都可以在我的问题中找到:Microsoft SQL Server, DATETIME column, java.sql.Timestamp, Microsoft JDBC 4.2
标签: java sql-server datetime jdbc timestamp