• It sounds like the date is not what you think it is! Try:

    declare @mySmallDate smalldatetime

    set @mySmallDate = '20030721'

    select @mySmallDate

    That should work just fine. If you try a date which is outside of the range for smalldatetime (roughly the year 1900 to 2079), such as:

    declare @mySmallDate smalldatetime

    set @mySmallDate = '20990721'

    select @mySmallDate

    you replicate the error you are getting. Double-check the date which is being used for the insert (try using Profiler to see exactly what is going on).

    If you want to store dates with a bigger range, use the standard "datetime" datatype.