У меня возникла проблема, связанная с преобразованием datetime из XML (ISO8601: yyyy-mm-ddThh: mi: ss.mmm) в дату и время SQL Server 2005. Проблема в том, что преобразование миллисекунд неверно. Я тестировал неявное и явное преобразование, используя convert (datetime, MyDate, 126) из nvarchar, и результат тот же:
Original Result
2009-10-29T15:43:12.990 2009-10-29 15:43:12.990
2009-10-29T15:43:12.991 2009-10-29 15:43:12.990
2009-10-29T15:43:12.992 2009-10-29 15:43:12.993
2009-10-29T15:43:12.993 2009-10-29 15:43:12.993
2009-10-29T15:43:12.994 2009-10-29 15:43:12.993
2009-10-29T15:43:12.995 2009-10-29 15:43:12.997
2009-10-29T15:43:12.996 2009-10-29 15:43:12.997
2009-10-29T15:43:12.997 2009-10-29 15:43:12.997
2009-10-29T15:43:12.998 2009-10-29 15:43:12.997
2009-10-29T15:43:12.999 2009-10-29 15:43:13.000
Мое неинвазивное тестирование показывает, что последняя цифра равна 0, 3 или 7. Является ли это простой проблемой округления? Вариация Millisecond важна, и потеря/выигрыш один или два не является вариантом.