I strongly suggest using some sort of UDF versus trying to do it all
By using a UDF you can use SQL error trapping like WHENEVER.
Then you don't have to try to remember strange date exceptions like "if
this year is divisible by 400..."
Just get your digits in the right order, try casting it to a date, and if
the cast fails the WHENEVER can put a null or something in it.