Posting this as an answer since there won't be enough room in the comments
You should post your entire query because the current statements should yield more results whereas for you they return less.
Play around with the following code to see for yourself :
declare @test Datetime;
select @test = '2013-1-04';
select 1
where YEAR(@test) > YEAR(GETDATE()) - 1
and YEAR(@test) <= YEAR(GETDATE())
select 1
where YEAR(@test) = YEAR(GETDATE())
and MONTH(@test) <= MONTH(GETDATE()) - 1
and MONTH(@test) >= MONTH(GETDATE()) - 7
select 1
where YEAR(@test) = YEAR(GETDATE())
and MONTH(@test) >= MONTH(GETDATE()) - 4
and MONTH(@test) <= MONTH(GETDATE()) - 1
change to value of test and you will not find a value that triggers the second or third without triggering the first.
In conclusion : post your entire query :)