Você está procurando algo parecido com isto?
select *
from MY_TABLE
where (id, name) in ((1,'new'), (2, 'old')) and
date between effectiveDate and termDate
Isso procura os pares em uma lista e, em seguida, verifica as datas entre um intervalo de datas.
EDITAR:
Acho que você quer dividir isso em várias cláusulas, uma para cada conjunto de valores:
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
. . .