MySQL Überlappung zwischen zwei Datumsangaben vermeiden

Gray

Erfahrenes Mitglied
Hi,

ich habe folgendes Problem:

Es gibt einen Termin der von 12:00 (start) bis 12:30 (ende) geht. (als Timestamp gespeichert)

Nun gibt es einen neuen Eintrag der von 11:45 bis 12:15 geht, dies soll abgefragt werden, so das es zu keinen Überlappungen kommt.

Ebenso müsste aber auch erkannt werden wenn der neue Eintrag von 12:10 bis 12:20 geht oder auch von 11:00 bis 13:00

Nur wenn der neue Termin sich nicht überschneidet darf der Eintrag gemacht werden.

Und hier stehe ich leider komplett auf dem Schlauch wie ich dies Abfragen soll.

THX
 
Ich bin kein wirklicher Datenbankprofi, aber ich kann mir aus meinen Erkenntnissen heraus nicht vorstellen, dass das geht.
Solltest du das nicht lieber auf Applikationsebene lösen?
 
Naja, ich würde den Schuh anders aufziehen.

SQL:
select
    *
from
    my_table t
where
    t.start_time BETWEEN '12:00' AND '12:30'
    OR
    t.stop_time BETWEEN '12:00' AND '12:30'

Mit dem Query lässt du dir alle Einträge ausgeben, die in deinem gewünschten Zeitraum liegen. Kommt kein Ergebnis, ist da frei.
 
Nicht ganz Kalito
Wenn der ein Termin von 10 Uhr bis 14 Uhr drin ist, dann sagt dein SQL, dass es geht....

Als ich noch jung war.....
Ne, ich wollte nur sagen, dass ich mich vor geraumer Zeit damit auseinader gesetzt haben: [SQL] Perioden vergleichen
SQL:
SELECT  *
FROM  tbl_data AS t
WHERE LEAST(12:30, t.stop_time) >= GREATEST(12:00, t.start_time)
 
Zurück