The thing is, 0 can't be cast to a date.
DECLARE @SomeDate CHAR(8) = '0'
SELECT ISDATE(@SomeDate), CAST(@SomeDate AS DATE)
Msg 241, Level 16, State 1, Line 3
Conversion failed when converting date and/or time from character string.
So if you have thousands of rows with a 0 in, you will get conversion error.
Gail Shaw
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability