Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Converter varchar para datetime no sql que está tendo milissegundos


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.