Die Anforderungen sind bereits exact formuliert. Der Rest sind Ausnahmen. 31.*.* ist der 31 und nich der 1. Es wäre unfair mich dazu zu zwingen, alle Ausnahmen einzeln zu beschreiben.
Sorry, wenn meine Bemerkung oben etwas abwertend klang, das war nicht so gedacht. Aber zum Finden eines Algorithmus spielt es schon eine große Rolle, was der denn genau leisten soll. Insbesondere ist die Frage, ob die Datumsfunktionen von MySQL (etwa adddate) hilfreich sind und etwas für Dich Brauchbares tun, ein Aspekt bei der Frage des genauen Datenbankdesigns.
31.*.* bis 31.*.* bedeutet also nur 31-ten Tag eines Monats, der Einen beinhaltet.
Ach so, erste Frage wäre überhaupt: Ist das ein Intervall von einem Monat oder einem Tag, sprich: sind die Monate der beiden Daten als identisch anzunehmen, wenn die Tage gleich sind? Nach all dem Beschriebenen denke ich: ja, dann hab ich in meinem obigen Post da falsch gelegen.
Ich hätte aber noch mal ne Frage, weils mich interessiert: Wozu dient denn das Ganze? Da ja die verschobenen Intervalle nicht mal gleich lang sind (etwa 15.1. - 10.2. ist größer als 15.2. - 10.3.), hab ich nicht so recht ne Idee, was Du damit überhaupt tust.
Ich habe bereits eine Lösung, an der ich gerade noch arbeite. Dazu schreibe ich später im Blog.
Ok. Wo findet man das dann?
Viele Grüße,
der Bademeister