Hi Patrick,
My 2 cents:
1) If the source system is providing the junk date values, then let the ETL tool handle rejecting the date values. Depending on your ETL, you can reject the incorrect records.
2) If the requirement is to check the user input value, then it should be handled by the front end reporting tool (like MSTR / BO).
3) Alternatively, the option suggested by Henrique is really good and can be implemented. But I think such a check at each value level may have performance impact.
Regards,
Ravi