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.
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)SQL In The Wild
: Discussions on DB performance with occasional diversions into recoverability
We walk in the dark places no others will enter
We stand on the bridge and no one may pass