DATEPART returns integer. Use >= and <= instead of BETWEEN. See if this helps.
Also, seems you have a logical issue there.
For the end date you check only the DAY,
for the start date, you check only the MONTH.
This seems wrong to me.
Try this:
DECLARE @DT datetime
SET @DT = getdate()
DECLARE @m1 int
SET @m1 = DATEPART(MONTH, SEASON_START_DATE)
DECLARE @m2 int
SET @m2 = DATEPART(MONTH, SEASON_END_DATE)
IF (@m2 < @m1)
BEGIN
SET @m2 = @m2 + 12
DECLARE @m int
SET @m = DATEPART(MONTH, @DT)
IF (@m >= 1 and @m <= @m2) BEGIN SET @m = @m + 12 END
END
SELECT * FROM @SOMEDATA
WHERE
@m * 100 + DATEPART(DAY,@dt) >=
@m1 * 100 + DATEPART(DAY,SEASON_START_DATE)
AND
@m * 100 + DATEPART(DAY,@dt) <=
@m2 * 100 + DATEPART(DAY,SEASON_END_DATE)