in your date_opened_char is most probably a value (or more) that contains data that cannot be converted to a datetime value.
By the way, if you always compare to the 0:00 time, you can omit it in the query, because sql server defaults to midnight time.
then there is no problem. I am not saying that all cannot be converted, but it only takes one to receive an error. Perhaps you can create a stored procedure that browses through the data with a cursor and using the @@error variable you can determine which one(s) create(s) the error.
Also, you have one bracket short after the 'as datetime' part, but this could be of the copy pasting.