Použijte:
AND oh.tran_date BETWEEN TRUNC(SYSDATE - 1) AND TRUNC(SYSDATE) - 1/86400
Reference:TRUNC
Volání funkce na tran_date
znamená, že optimalizátor nebude moci použít index (za předpokladu, že nějaký existuje), který je k němu přidružen. Některé databáze, jako je Oracle, podporují indexy založené na funkcích, které umožňují provádět funkce na datech, aby se minimalizoval dopad v takových situacích, ale IME DBA to neumožňují. A souhlasím – v tomto případě nejsou opravdu nutné.