TSQL Почему преобразование VARCHAR в DATETIME изменяет значение в миллисекундах - PullRequest
2 голосов
/ 12 октября 2011

У меня проблема с преобразованием даты и времени в TSQL (SQL 2005). Я пытаюсь преобразовать значение varchar "2011-12-10 12:48:56.066" в Datetime, но столкнулся с проблемой. Значение Datetime изменяется на «2011-12-10 12:48:56.067», которое отличается на одну миллисекунду от оригинала. Это происходит с другим значением (например, "2011-12-10 12:48:56.067"), но не с другим значением ("2011-12-10 12:48:56.013" или "2011-12-10 12:48:56.040").

Кто-нибудь может объяснить, почему миллисекундное изменение преобразует varchar в datetime?

Ответы [ 2 ]

4 голосов
/ 12 октября 2011

Это связано с представлением в этом разрешении.Это не ошибка.

Тип datetime имеет разрешение 3,33 мс

[Если бы вы использовали SQL Server 2008, вы могли бы использовать datetime2 с точностью до 100 нс.]

0 голосов
/ 12 октября 2011

.066 на самом деле является непрерывным числом (0.06666667). После конвертации 0,066 раундов в 0,067

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...