DATE_SUB
é uma função MySQL que não existe no PostgreSQL. Você pode (por exemplo) usar;
NOW() - '30 MINUTES'::INTERVAL
...ou...
NOW() - INTERVAL '30' MINUTE
...ou...
NOW() - INTERVAL '30 MINUTES'
como substituto.
Um SQLfiddle com todos os 3 para testar .