I strongly suggest using some sort of UDF
And I strongly suggest to use a translation table to join away all bad data.
A table with a real date field and all kinds of huddle formats will have
some thousand records for 100 years, easy to use, very stable and fastest
and easiest solution to do things like this.