DATE_SUB
to funkcja MySQL, która nie istnieje w PostgreSQL.
Możesz (na przykład) użyć;
NOW() - '30 MINUTES'::INTERVAL
...lub...
NOW() - INTERVAL '30' MINUTE
...lub...
NOW() - INTERVAL '30 MINUTES'
jako zamiennik.
SQLfiddle ze wszystkimi 3 do przetestowania .