DATE_SUB
är en MySQL-funktion som inte finns i PostgreSQL.
Du kan (till exempel) antingen använda;
NOW() - '30 MINUTES'::INTERVAL
...eller...
NOW() - INTERVAL '30' MINUTE
...eller...
NOW() - INTERVAL '30 MINUTES'
som ersättning.
En SQLfiddle med alla 3 att testa med .