Why is TIMESTAMP fractional seconds off by .001 when exported from DB2 to MSSQL data type DATE, DATETIME, TIMESTAMP not as VARCHAR()

When I export TIMESTAMP data type from DB2 to SQL Server data types DATE, DATETIME or TIMESTAMP the fractional time is off by .001. If I export as data type VARCHAR() I get the correct data. Is there an explanation and/or solution for this?

I have exported through SSIS and PENTAHO.

DB2 2021-10-20-21.31.41.138000

SQL Server 2021-10-20 21:31:41.137

Thank you in advance


Solution 1:

The result you have is completely expected.

datetime is accurate to 1/300th of a second. The closest you can get to 2021-10-20-21.31.41.138000 in a datetime is 2021-10-20T21:31:41.136666666666~ which is represented on screen as 2021-10-20 21:31:41.137 (as the displayed value is accurate to 3 digits, and rounded).

If you want the value to be accurate to 1/100000 of a second, use a datetime2(6), which could accurately store the value 2021-10-20T21:31:41.138000.