• Or take a step back and consider whether "dob" shouldn't be stored as separate columns to begin with, in accordance with standard data normalization (if you need to constantly look only at the month of a date, that might make it an atomic value, even though that's not normally true for most date columns). 

    Don't fall into the trap of trying to store data a certain way just because it's displayed a certain way.  Remember, you can always combine/reformat columns to display data as needed.

    The easiest way is probably to "fudge" a bit and store dob as a date but with a default year of 1900, and store the actual birth year in a separate column.  This makes checking the birth month (and day, if needed) very easy and standard, viz:
    cust_dob >= '19000101' AND cust_dob < '19000201'
    It also makes checking min age rather easy:
    --check if cust is at least 18 yo
    cust_yob <= '1998' OR (cust_yob = 1997 AND ...)

    Or you could store y&m&d separately, with of course a check constraint to verify that the values yielded a valid date.

    SQL DBA,SQL Server MVP(07, 08, 09) A socialist is someone who will give you the shirt off *someone else's* back.