Използвайте:
AND oh.tran_date BETWEEN TRUNC(SYSDATE - 1) AND TRUNC(SYSDATE) - 1/86400
Справка:TRUNC
Извикване на функция на tran_date
означава, че оптимизаторът няма да може да използва индекс (ако приемем, че съществува), свързан с него. Някои бази данни, като Oracle, поддържат индекси, базирани на функции, които позволяват изпълнението на функции върху данните, за да се сведе до минимум въздействието в такива ситуации, но IME DBA няма да позволяват това. И съм съгласен - те не са необходими в този случай.