DATE_SUB
est une fonction MySQL qui n'existe pas dans PostgreSQL.
Vous pouvez (par exemple) soit utiliser ;
NOW() - '30 MINUTES'::INTERVAL
...ou...
NOW() - INTERVAL '30' MINUTE
...ou...
NOW() - INTERVAL '30 MINUTES'
en remplacement.
Un SQLfiddle avec les 3 à tester .