pegando a ideia de Zerkms:
Select * FROM (
SELECT * FROM `articles`
WHERE date >= UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 30 DAY))
ORDER BY `views` DESC
LIMIT 20
) as reverse_article
ORDER BY views ASC
vai deixar você classificar duas vezes
-
O mais alto será escolhido (seleção interna)
-
O mais baixo será escolhido primeiro.
CONTUDO
você também pode reverter a classificação via PHP primeiro obtendo seu fetchALL e executando a contagem regressiva de count() (que é sua matriz de tamanho máximo) até 0 (que é sua exibição de matriz mais alta)
faça sua escolha