J'ai deux enregistrements sur ma table:
Tableau:
ID StartDate EndDate
1 2013-01-01 2016-01-01
2 2016-02-01 NULL
Ma requête:
@DatePeriodFrom = 2016-01-01
@DatePeriodTo = 2016-01-01
select *
from tableabove ta
where (ta.StartDate >= @DatePeriodFrom and ta.EndDate >= @DatePeriodTo)
Mon problème ici est qu'il ne renverra aucun résultat. Si je remplace and
par or
, il renverra les deux lignes. Je pense utiliser ISNULL
mais pas de chance pour moi.
ÉDITER
Ce que je veux, c'est renvoyer la ligne en fonction de la date de début et de la date de fin données, que la ligne ait une date de fin nulle.
Dans l'exemple ci-dessus, la 1ère ligne doit être renvoyée.
Dans cet exemple, la 2ème ligne doit être renvoyée:
@DatePeriodFrom = 2016-02-01
@DatePeriodTo = 2016-02-01
Une idée?
Au cas où vous auriez besoin de trouver toutes les intersections de périodes:
where ta.StartDate <= @DatePeriodTo
and (ta.endDate IS NULL or ta.endDate >= @DatePeriodFrom)
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots