je stocker des intervalles dans le SQL, par exemple:Vérifiez intervalle de temps en utilisant la condition SQL
id INT
from DATE
to DATE
Comment puis-je vérifier, en utilisant une seule condition (si possible) si un conflit intervalle NOUVEA existant ?
Exemples:
|-----------| (from 1 to 5)
|-----------| (from 2 to 6)
|--| (from 3 to 4)
|--| (from 7 to 8)
Chaque intervalle (dans les trois premiers) a un conflit avec les deux autres intervalles ... sauf le dernier qui est seul.
-
Cette vérification peut être réalisée en utilisant une certaine condition comme:
WHERE (`from` <= $FROM and `to` >= $TO)
Mais cela ne intervalles cocher contient le nouveau ... Pas les autres intervalles qui a une certaine intersections OU ceux qui est à l'intérieur le nouveau.
Peut-être que quelque chose comme ça?
WHERE NOT (`from` < $FROM and `to` < $TO) AND NOT (`from` > $FROM and `to` > $TO)
Obs .: Je dois trouver les collisions pour alerter l'utilisateur que cette nouvelle période existent déjà ou entrer en conflit avec un un existin.
Quelle représentation des périodes utilisez-vous, par ex. fermé-ouvert? Autrement dit, considéreriez-vous '(de 1 à 5)' entrer en collision avec '(de 5 à 6)'? – onedaywhen