You'd need to add a period_start and optional period_end column on each lookup. Then when getting or setting the lookups be sure to check/set the period_start/end. Be careful to establish whether or not it is valid for period_end to be equal to the next period_start e.g.
Select *
from lookup
where lookup.period_start <sysdate and lookup.period_end >sysdate
I'd suggest doing the checks in a library function in a package to ensure you do the same check each time.