Suchen Sie so etwas?
select *
from MY_TABLE
where (id, name) in ((1,'new'), (2, 'old')) and
date between effectiveDate and termDate
Dies sucht nach den Paaren in einer Liste und überprüft dann die Daten zwischen einem Datumsbereich.
BEARBEITEN:
Ich denke, Sie möchten dies in mehrere Klauseln aufteilen, eine für jeden Wertesatz:
where (id = 1 and name = 'new' and date between eff1 and term1) or
(id = 2 and name = 'old' and date between eff2 and term2) or
. . .