7
intervalle
medina5 edited this page 2025-09-07 08:43:21 +02:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Intervalles

Un intervalle possède un début d et une fin f, tels que d < f.

Les types de plage sont utiles car ils représentent de nombreuses valeurs déléments dans une seule valeur de plage et parce que des concepts tels que les plages qui se chevauchent peuvent être exprimés clairement. Lutilisation de plages dheures et de dates à des fins de planification en est lexemple le plus clair ; mais les fourchettes de prix, les plages de mesure d'un instrument, etc. peuvent également être utiles.

Les types de plage sont des types de données représentant une plage de valeurs d'un certain type d'élément (appelé sous-type de plage). Par exemple, des plages dhorodatage peuvent être utilisées pour représenter les plages horaires pendant lesquelles une salle de réunion est réservée. Dans ce cas, le type de données est tsrange (abréviation de « timestamp range ») et timestamp est le sous-type.

Types

  • int4range : Intervalle d'entier
  • int8range : Intervalle d'entier long
  • numrange : Intervalle de nombres décimaux
  • tsrange : Intervalle d'horodatage sans fuseau horaire
  • tstzrange : Intervalle d'horodatage avec fuseau horaire
  • daterange : Intervalle de date

Déclaration

A l'aide de fonctions

SELECT int4range(10, 20);

Déclare un intervalle d'entiers enrte 10 inclus et 20 exclus.

En mode textuel

SELECT '[10,20)'::int4range;

Limites inclusives et exclusives

Chaque plage non vide a deux limites, la limite inférieure et la limite supérieure. Tous les points entre ces valeurs sont inclus dans la plage. Une limite inclusive signifie que le point limite lui-même est également inclus dans la plage, tandis qu'une limite exclusive signifie que le point limite n'est pas inclus dans la plage.

Dans la forme textuelle d'une plage, les limites inclusives sont représentées par des crochets [ et ] tandis que les limites exclusives sont représentées par des parenthèses ( et ).

Les fonctions lower_inc et upper_inc testent respectivement l'inclusivité des limites inférieure et supérieure d'une valeur de plage.

Plages infinies (illimitées)

La limite inférieure d'une plage peut être omise, ce qui signifie que toutes les valeurs inférieures à la limite supérieure sont incluses, par exemple (,3). De même, si la limite supérieure de la plage est omise, alors toutes les valeurs supérieures à la limite supérieure de la plage le sont.

Les fonctions lower_inf et upper_inf testent respectivement les limites inférieure et supérieure infinies d'une plage.

Logique dintervalles dAllen

Ensemble complet dopérateurs booléens de base pour le positionnement relatif dans le temps.

Deux intervalles A et B peuvent se positionner selon 13 configurations.

1. Précède

A Précède B lorsque la borne supérieure de A est strictement inférieure à la borne inférieure de B.

Précède

Allen Postgres
A < B A << B
select '[3,5]'::int4range << '[8,15]'::int4range;

2. Succède

A Succède à B lorsque la borne inférieure de A est strictement supérieure à la borne supérieure de B.

Succède

Allen Postgres
A > B A >> B
select '[8,15]'::int4range >> '[3,5]'::int4range;

L'opérateur Succède (>) est le transposé de l'opérateur Précède (<).

3. Égale

A Égale B lorsque les bornes inférieures et supérieures de chaque intervalle sont égales.

Succède

Allen Postgres
A = B A = B
select '[3,10]'::int4range = '[3,10]'::int4range;

L'opérateur Égale (=) est son propre transposé.

4. Rencontre / rejoint

A Rencontre (meets) B lorsque la borne supérieure de A moins la borne inférieure de B est égale à une unité.

Allen Postgres
A m B A -|- B

Rencontre

select '[3,6]'::int4range -|- '[7,14]'::int4range;

L'opérateur Rencontre (m) a comme transposé l'opérateur Rencontré par (mi). i pour inverse.

5. Chevauche / intersecte

A chevauche (overlaps) B lorsque la borne supérieure de A est supérieure à la borne inférieure de B sans que la borne inférieure de A soit supérieure à la borne supérieure de B.

Chevauche

Allen Postgres
A o B A && B
select '[3,8]'::int4range && '[5,14]'::int4range;

L'opérateur Chevauche (o) a comme transposé l'opérateur Est chevauché par (oi). i pour inverse.

6. Pendant

A se déroule Pendant (during) B lorque la borne inférieure de A est supérieure à la borne inférieure de B et que la borne supérieure de A est inférieure à la borne supérieure de B.

Pendant

Allen Postgres
A d B A <@ B
select '[7,10]'::int4range <@ '[5,14]'::int4range;

L'opérateur Pendant (d) a comme transposé l'opérateur Contient (di). i pour inverse.

7. Contient

A Contient B lorsque la borne inférieure de A est inférieure à la borne inférieure de B et que la borne supérieure de A est supérieure à la borne supérieure de B.

Contient

Allen Postgres
A di B A @> B
select '[5,14]'::int4range @> '[7,10]'::int4range;

L'opérateur Contient (di) est le transposé de l'opérateur Pendant (d).

8. Commence

A Commence en même temps (starts) que B lorsque la borne inférieure de A est égale à la borne inférieure de B.

Commence

Allen Postgres
A s B A &> B
select '[5,15]'::int4range &> '[5,10]'::int4range;

L'opérateur Commence (s) a comme transposé l'opérateur Débuté par (si). i pour inverse.

9. Finit

A Finit en même temps (finishes) que B lorsque la borne supérieure de A est égale à la borne supérieure de B.

Finit

Allen Postgres
A f B A &< B
select '[5,15]'::int4range &< '[10,15]'::int4range;

L'opérateur Finit (f) a comme transposé l'opérateur Terminé par (fi). i pour inverse.

Opérateurs combinatoires

Union

Union

select '[5,10]'::int4range + '[8,15]'::int4range;

Intersection

Différence

select '[5,10]'::int4range * '[8,15]'::int4range;

Différence

Différence

select '[5,10]'::int4range - '[8,15]'::int4range;