You should make the data type of the variable @Today exactly the same as the data type of "date" column in "ordersTable". I'll assume for now it's datetime. Note that I use "<" not "<=" on the ending scheduledate comparison.
Declare @Today datetime
Declare @MonthEnd datetime
SET @Today = GETDATE()
Select date, acctnum, ordernum, scheduledate
where date = @Today
and scheduledate >= @Today and
scheduledate < CONVERT(char(6), case when day(@Today) <= 21 THEN @Today ELSE DATEADD(MONTH, 1, @Today) END, 112) + '22'