Я хочу получить данные за предыдущий день,
В Oracle я бы рекомендовал:
where table_name.creation_dt >= trunc(sysdate) - interval '1' day and
table_name.creation_dt < trunc(sysdate)
Это может использовать индекс на creation_dt
. Я также рекомендую вам использовать синтаксис interval
для работы с датами. Хотя вы можете использовать trunc(sysdate) - 1
, мне это кажется старомодным (Oracle не всегда поддерживал interval
).
Вы также можете сформулировать это более кратко, как:
where trunc(table_name.creation_dt) = trunc(sysdate) - interval '1' day
Однако это может быть немного сложнее для оптимизатора.