Sbagliato invece.... perche' la query ti rende le date tra ultimo pagamento -30 giorni e oggi - 20 mesi .....

la query corretta dovrebbe essere invece:
codice:
SELECT * from tabella
where datapagamento between  
(curdate() - interval 20 month) - interval 30 day
AND
curdate() - interval 20 month
capita se non puoi provare....