Buenos días dos_olivos:
Veo que apenas estás comenzando a utilizar el foro, te comento que si tienes alguna duda particular NO UTILICES UN TEMA ABIERTO PARA EXPRESAR TU PREGUNTA. Lo correcto es que ABRAS UN NUEVO TEMA, pues aunque hay semejanzas en los planteamientos son dos cosas completamente distintas.
Te comento que el estándar que utiliza SQL Server para las fechas es el formato ANSI (yyyymmdd hh:mi:ss), en tu instrucción no especificas ningún formato en el CONVERT, por lo que toma el formato ANSI o la del lenguaje que tengas definido en la base de datos, si alguna cadena no cumple con este formato te aparecerá el error que mencionas. Pongamos algunos ejemplos, supongamos que quieres convertir la fecha 31 de Diciembre de 2010. Puedes hacerlo así:
Código SQL:
Ver originalSELECT CONVERT(datetime, '31/12/2010')
SELECT CONVERT(datetime, '31/12/2010', 103)
SELECT CONVERT(datetime, '20101231')
Si tuvieras definido el idioma inglés en tu Motor de BD el primer select marcaría error, pues el formato de fecha para el idioma inglés es mm/dd/yyyy. En la segunda opción no hay problemas, pues estás enviando como tercer parámetro el estilo 103 (que corresponde a dd/mm/yyyy). En el tercer select estás utilizando justamente el formato ANSI, por lo que no debes tener problemas.
Puedes utilizar la función ISDATE para filtrar aquellas cadenas que no tengan el formato correcto. Investiga algo al respecto y si continuas con problemas lo comentas en el foro (EN UN NUEVO TEMA POR FAVOR).
También puedes checar este artículo, me parece muy completa la forma en que explica el manejo de fechas
http://www.mug.org.ar/SQL/ArticSQL/240.aspx
Saludos
Leo.