Stai cercando qualcosa del genere?
select *
from MY_TABLE
where (id, name) in ((1,'new'), (2, 'old')) and
date between effectiveDate and termDate
Questo cerca le coppie in un elenco e quindi controlla le date tra un intervallo di date.
MODIFICA:
Penso che tu voglia suddividere questo in più clausole, una per ogni insieme di valori:
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
. . .