KlausP: MySQL Abfrage Between zwei Datumsfeldern

Beitrag lesen

Guten Morgen,

ich brauche bitte mal einen Tipp von euch:

Ich habe eine Tabelle für einen Belegungsplan (id, anreise (date), abreise (date)).

Beispiel für einen Datensatz:
id = 1
anreise = 2014-07-09
abreise = 2014-07-31

Nun möchte ich beim Eintragen neuer Buchungen eine Überschneidung vermeiden und Frage daher wie folgt die DB ab:

  
SELECT id FROM `tabelle` WHERE (`anreise` BETWEEN '2014-07-09' AND '2014-07-31') || (`abreise` BETWEEN '2014-07-09' AND '2014-07-31')  

Wenn ein Datensatz gefunden wird breche ich den INSERT ab und gebe eine Fehlermeldung aus.

Das Problem ist, dass z.B. der 2014-07-31 ein Abreisetag ist, aber auch ein Anreisetag sein kann. Gleiches gilt z.B. auch für den 2014-08-10:

id = 1
anreise = 2014-07-31
abreise = 2014-08-10

Nur die Tage "zwischen" dem Anreisetag und dem Abreisetag können keine An- und Abreisetage sein.

Hat jemand eine Idee wie ich meine "Sicherheitsabfrage" erwidern/umstellen muss?

Vielen Dank, Klaus