Hallo Mitdenker,
ich komme bei einer Aufgabe nicht (effizient) weiter und bin auf Euer Rat angewiesen.
Es gibt eine Datenbanktabelle, die aus 7 Spalten besteht:
id, begin_year, begin_month, begin_day, end_year, end_month, end_day
Jede Zeile in der Tabelle repräsentiert eine Zeitperiode, wobei Spalten "*_year" und "*_month" gleich NULL bzw. nicht angegeben sein können. Nachfolgend sind nicht angegebene Daten mit Stern gekennzeichnet. Die bedeuten in diesem Fall "jeder" oder "jedes".
Ein paar Beispielperioden für bessere Interpretation (Zahl am Anfang ist eine ID):
1 | 05.01.2010 - 10.05.2010
2 | 15.12.2010 - 15.01.2011 (über Silvester)
3 | 10.06.* - 20.09.* (gilt für jedes Jahr)
4 | 10.*.* - 20.*.* (gilt für jeden Monat und jedes Jahr)
5 | 10.*.2010 - 20.*.2010 (gilt für jeden Monat in dem Jahr 2010)
6 | 10.11.* - 30.03.* (über Silvester und jedes Jahr)
7 | 01.09.* - 05.05.* (über Silvester und jedes Jahr)
Nun wird in einem Webformular eine andere beliebige (aber vollständige) Zeitperiode angegeben, zum Beispiel wie folgt:
05.05.2010 - 05.08.2010 (lang)
01.07.2010 - 07.07.2010 (kurz)
23.12.2010 - 04.01.2011 (über Silvester)
…
Es wird eine Formel (oder Algorithmus) gesucht, die alle Perioden (aus der Datenbank) findet, die für (im Webformular) angegebene Periode passend sind. Praktisch also bekommt die Formel bzw. Algorithmus die Periode aus dem Formular und soll in der DB "id’s" finden, die die gesuchte Periode beinhalten können.
Periode : ID
05.05.2010 - 05.08.2010 : keine
01.07.2010 - 07.07.2010 : 3
23.12.2010 - 04.01.2011 : 2, 6, 7
Es wäre eine große Hilfe, wenn mir jemand einen Lösungsvorschlag oder eine Denkrichtung gibt.
Danke im Voraus
Gruß Alexander.