Интересно, что если вы используете SQL Server 2005 и более ранние версии, вы не получите точную точность, которую вы хотите, потому что значения DateTime округляются с приращениями .000, .003 или .007. Таким образом, 51.234 становится 51.233. Однако, если вы используете DateTime2, вы можете получить необходимую точность:
declare @x varchar(50)
set @x='20100218000051234'
Select DateAdd(ms, Cast(Substring(@x, 9, 9) As int), Cast(Substring(@x, 1, 8) As datetime))
Select DateAdd(ms, Cast(Substring(@x, 9, 9) As int), Cast(Substring(@x, 1, 8) As datetime2))
Results:
2010-02-18 00:00:51.233
2010-02-18 00:00:51.2340000