Você pode usar o estilo 121, mas pode ter apenas 3 dígitos por milissegundos (ou seja,
yyyy-mm-dd hh:mi:ss.mmm(24h)
) formato. declare @abc varchar(100)='2011-09-26 16:36:57.810'
select convert(datetime,@abc,121)
Então você pode resolver limitando o campo varchar a 23 caracteres antes de converter como:
declare @abc varchar(100)='2011-09-26 16:36:57.810000'
select convert(datetime,convert(varchar(23),@abc),121)
Ou use o
Left()
função para obter os primeiros 23 caracteres como:select convert(datetime,left(@abc,23),121)
Tente evitar armazenar data como string.