El problema es que su cadena no un formato de fecha y hora de SQL Server aceptado. SQL Server reconoce el ISO8601 formato, que es:
yyyy-mm-ddThh:mi:ss.mmm
Que sería 2013-03-02T16:48:00 para su fecha anterior.
Consulte Estilos de fecha y hora sección.
Entonces la siguiente declaración fallará:
declare @date nvarchar(max) = '20130302T164800'
select convertedDate = cast(@date as datetime)
Si convierte la cadena a ISO8601 formato, la declaración funcionará:
declare @date nvarchar(max) = '2013-03-02T16:48:00'
select convertedDate = cast(@date as datetime)
Puede actualizar su formato a uno que SQL Server reconozca y convertir la cadena a una fecha y hora en una declaración:
declare @date nvarchar(max) = '20130302T164800'
select cast(left(@date, 4)
+ '-' + substring(@date,5,2)
+ '-' + substring(@date,7,5)
+ ':' + substring(@date,12,2)
+ ':' + substring(@date,14,2) as datetime)
Este es solo un ejemplo, podría convertirlo a cualquier formato reconocido por SQL Server, pero esto lo convierte a ISO8601 . Básicamente, conviértalo a un formato diferente para permitir que la conversión funcione.