Sounds like the character string is not really date. You can check which is not date and try to fix it then convert.

select cdate, isdate(cdate)
from yourtable

anything with 0 in isdate column is invalid.