Validate a column to accept only certain age limit from birthdate given using check constraint
Most likely the issue is that the ELSE is returning BirthDate instead of 0.

If there is already data in the table that conflicts, then add the WITH NOCHECK clause if you want to keep that data, else first delete any rows that conflict with the new constraint. 

Also, best to use MONTH instead of M for the date part, for easier readability.