that is exactly why you'd want to not store a date as a number: 20091221 you can kind of read as a date, but what if the value is 20091250 20099999??
you are using a number and assuming that certain pairs of digits should not exceed #allowed days/#allowed months. it is bad practice. always store dates as dates.
at some point you'll be back saying how do i convert 20091221 into a datetime.
anyway, yo can get the value you want as part of a convert statement:
SELECT CONVERT(VARCHAR(35),@date,112)
--results = '20091221'
Lowell