You almost certainly have data in that column that is not a proper date.
You can skip those values like this. Btw, you should also use a date comparison not a character comparison, so get rid of the CONVERT on OrderDate:
WHERE ISDATE(OrderDate) = 1 AND OrderDate BETWEEN '...' AND '...'
You could also look for bad dates like so:
WHERE ISDATE(OrderDate) = 0
and fix them. Then to be sure you really ought to change the column to DATETIME so bad data can't get in there again