First thing to look at is the actual values you are comparing: if they are dates (and it's normal to store Join dates and leave dates as DateTime rather than just a year value as almost nobody starts of finishes on Jan 1st) then equality tests don't often work as they are accurate to milliseonds!
The next thing is to look at your condition.
A AND B OR C
Is that
(A AND B) OR C
Or
A AND (B OR C)
There is an important difference in there! If you aren't exactly sure how SQL (or any other system) will treat a condition, then use the appropriate brackets to force exactly the intrepretation you need.
I'm guessing you want
A AND (B OR C)
but I could be wrong.
Finally, check the values you are passing to to check against, and the DB values you are referring to: look at what you think you should get, and then at exactly what you do get. If they don't match, there is likely to be a pattern in the delivered data which will point you in the right direction.
Sorry, but without the data you are using, we can't be specific on a solution.