DATE_SUB
è una funzione MySQL che non esiste in PostgreSQL.
Puoi (ad esempio) utilizzare;
NOW() - '30 MINUTES'::INTERVAL
...o...
NOW() - INTERVAL '30' MINUTE
...o...
NOW() - INTERVAL '30 MINUTES'
in sostituzione.
Un SQLfiddle con tutti e 3 con cui testare .