Hi!
Hierzu wollte ich dementsprechend Zeiträume (von-bis) als Timestamp in der DB ablegen.
Warum willst du dafür Timestamps missbrauchen und kein Datetime-Feld verwenden?
Eine Abfrage, ob bereits für einen neuen Belegungszeitraum eine Belegung vorliegt, kann ich ja doch mit BETWEEN vornehmen, aber diese query würde mir ja nur dann einen Wert zurückliefern, wenn der geplante Belegungszeitrahmen gleich oder kleiner als eine schon gespeicherte Belegung wäre.
BETWEEN verarbeitet drei Werte. Du hast aber vier Werte, nämlich jeweils Start und Ende des neuen und des alten Zeitraums. Du brauchst zwei Bedingungen: die erste prüft, dass der neue Starttermin nicht in eine Belegung fällt und die zweite prüft, ob das auf den neuen Endtermin ebenso zutrifft.
Was ist aber bei folgenden Beispiel-Scenarien:
Gespeicherte Belegung:
01.10.2010 11.00 Uhr bis 05.10.2010 10.00 Uhr
Gewünschte Neubelegung:
20.09.2010 11.00 Uhr bis 03.10.2010 10.00 Uhr
Endtermin erfüllt die Bedingung nicht.
03.10.2010 11.00 Uhr bis 04.10.2010 10.00 Uhr
Start- und Endtermine erfüllen die Bedingung nicht.
Umgekeht bahnt sich ja auch schon das Problem an, das ich bei einer Ausgabe einer Wochen oder Monatsübersicht auch die Zeiträume "zwischen" meinen Start- und Endtimestamps berücksichtigen müsste...
Inwiefern? Du kannst keine Daten abfragen, die nicht vorhanden sind. Du müsstest einen Kalender anderswoher nehmen und die belegten Zeiten eintragen. Der Rest bleibt nicht markiert, ist also frei.
Lo!