Hola fernan2010:
El ejemplo funciona correctamente pasa la fecha que pones de ejemplo ('16/11/2011 13:25')
Si al aplicarlo a tu consulta sigue marcando un error de conversión esto puede ser porque alguno de tus registros no tiene el formato que mencionaste al inicio. Igual y sería conveniente que primero verificaras con la función
ISDATE si existe algún registro con la fecha o la hora no válidas, para corregir los registros o en su defecto excluirlos de la conversión. Puedes hacerlo más o menos así:
Código SQL:
Ver originalSET LANGUAGE spanish
DECLARE @fechas TABLE (fecha VARCHAR(50))
INSERT INTO @fechas VALUES ('16/11/2011 13:25') --fecha valida y hora valida
INSERT INTO @fechas VALUES ('29/02/2011 13:25') --fecha no valida y hora valida
INSERT INTO @fechas VALUES ('28/02/2011 25:25') --fecha valida y hora no válida
INSERT INTO @fechas VALUES ('30/02/2011 25:25') --fecha no valida y hora no válida
SELECT fecha,
isdate(SUBSTRING(fecha, 1, 10)) fecha_valida,
isdate(SUBSTRING(fecha, 12, 5)) hora_valida FROM @fechas
al inicio especifico que el lenguaje por defecto en español, para que reconozca el formato de fecha dd/mm/yyyy. El resultado de esta consulta es el siguiente:
Código:
fecha|fecha_valida|hora_valida
------------------------------------------
16/11/2011 13:25|1|1
29/02/2011 13:25|0|1
28/02/2011 25:25|1|0
30/02/2011 25:25|0|0
Con respecto a tu pregunta, si es posible hacer la conversión y copiar el resultado en una nueva columna, pero para poder aplicarlo a todos los registros es necesario que TODOS LOS REGISTROS tengan fechas válidas.
Saludos y espero que te sea de ayuda el código.
Leo.