• That sheds a ton of light on the odd behavior!

    It sounds like if you want plan reuse, try taking your SQL and either putting it into a stored procedure with the dates as parameters, or use sp_executesql to put it into a dynamic SQL block, with the dates as parameters. This should give you better control over parameter sniffing and plan reuse---especially if you have any other parameters you want to pass in.

    Introducing sq_executesql into your query and passing in @StartDate and @EndDate will allow plans to be reused consistantly (I hope!).

    Good luck with this!