[eluser]jedd[/eluser]
Hey Slowcheetah, this looks like an interesting problem.
I think the big problem most people have when looking at new algorithms is they think in terms of existing ways of doing things. I think in this case because you want some links that look a bit like pagination links, that it's going to be handled similarly. I think you also need to really spell out how the system will work under various conditions - I find that helps a lot in the design process.
So, for example, what happens if you have no data for 2009-04 - and you're currently showing page 2009-05 ? Does the previous-month link go to an empty page, or does the previous month link identify, and take you to, 2009-03?
What happens if, for 2009-03, you have more records than will fit on a single page - do you offer real pagination within each month selection?
My initial thinking is that I'd create controller method that showed me a given months' worth of data. It'd be something like show ($month=NULL) and the first line would be to check if NULL, and if so, set $month = $thisyear-$thismonth. I'd be consistent with the ISO8601 approach of MS order, hyphen optional (though I'd probably keep it as it makes it more obvious to users).
In my model I'd have a function that would return a given month's worth of data, and also one that would return the count() for a given month. In my controller I'd do a model->count() for the previous/next month, and cycle forward and backwards either x months, or until I exhausted my table (this is another question you need to answer about how you know you've hit the end, either end - is there a gap that can appear to be an end?
I think this approach is fairly neat, and it allows you to utilise pagination within each month's data set.