Sorry, left out order by. You need to provide a invoice date to it, I assume the invoice record hasn't actually been created when this query is being used?
select Discount_Rate from MyTable
where Effective_Date <= <Invoice_date>
Order by Effective_Date DESC
FETCH FIRST 1 ROW ONLY