Các thao tác sau hoạt động trong SQL Server 2008 ( SQL Fiddle ):
select convert(datetime, left(t, 10), 105) +
convert(time, substring(t, 12, 12), 114)
from (select '01-11-1999 09:22:16.162632' as t) t;
Trớ trêu thay, nó không hoạt động trong SQL Server 2012. Ở đó, tôi nghĩ bạn phải làm:
select dateadd(ms, datediff(ms, 0, convert(datetime, substring(t, 12, 12), 114)),
convert(datetime, left(t, 10), 105)
)
from (select '01-11-1999 09:22:16.162632' as t) t;
Lưu ý trong cả hai trường hợp, điều này sử dụng mili giây thay vì micro giây. Tôi không tin rằng SQL Server cung cấp giá trị ngày giờ với độ chính xác cao như vậy.