Je sais qu'il y a beaucoup de ces types de questions, mais je n'en ai pas vu de suffisamment similaire à mes critères. Donc, je voudrais demander votre aide s'il vous plaît. Les champs que j'ai sont juste début et fin qui sont des types de temps. Je ne peux pas impliquer de dates spécifiques dans ceci. Si les plages horaires ne vont pas passer minuit à travers jour, je venais de comparer deux tuples en tant que tel:Les chevauchements SQL de temps passent minuit (sur 2 jours)
end1 > start2 AND start1 < end2
(. Points d'extrémité touchant ne sont pas considérés chevauchaient ici)
Mais quand j'impliquons le temps gamme qui passe (ou à) minuit, cela ne fonctionne évidemment pas. Par exemple, donné:
start | end
--------+--------
06:00PM | 01:00AM
03:00PM | 09:00PM
Sans les dates, comment puis-je y parvenir, s'il vous plaît. Ma supposition est, si la fin est moins que le début, alors nous impliquons 2 jours.
J'essaie de le faire en langage SQL standard, donc juste une logique simple et concise dans la clause WHERE.
Merci à tous!
Ajouté:
Aussi, comment pourrais-je tester si une plage de temps enveloppe complètement une autre? Merci encore!
@janechii: Bienvenue dans StackOverflow! Vous pouvez améliorer votre question en éditant les balises pour refléter la base de données que vous utilisez ('oracle',' mysql', 'sql-server', ...) –
@janechii - Pouvez-vous montrer aussi utiliser un peu du schéma de la table ? – Thomas
@Peter - Merci. J'utilise spécifiquement postgresql, mais j'aimerais le faire fonctionner dans d'autres bases de données, s'il-vous-plaît. – janechii