【发布时间】:2017-03-29 09:45:02
【问题描述】:
从我们的应用程序中,我们创建一个 java.sql.Timestamp,如下所示:
Timestamp currentTimeStamp = new Timestamp(System.currentTimeMillis());
currentTimeStamp.setNanos((int) (System.nanoTime() % 1000000000));
然后将其用作针对 DB2 和 MSSQL 的分布式事务中的列值。
DB2 删除它不能使用的数字并存储剩余的数字。
MSSQL 将数字四舍五入并存储该值。
然后问题就变成了两个数据库中的时间戳值不同,即使它们都具有相同的小数位 6。
使用纯 T-SQL 复制的示例:
DECLARE @t TABLE(x DATETIME2(6))
INSERT @t SELECT '2017-03-28 14:00:59.4106489'
SELECT x FROM @t
结果: 2017-03-28 14:00:59.410649
预期: 2017-03-28 14:00:59.410648
【问题讨论】:
标签: java sql-server jdbc mssql-jdbc