Hello expert, Thank you very much for all of your reply. But in my case, the 1 is variable. I tried the following but it complains that SELECT TRUNC(SYSDATE)-22/86400 from dual; TRUNC(SYS --------- 02-AUG-04 <--- Wrong date. SELECT TRUNC(SYSDATE-22)/86400 from dual; SELECT (TRUNC(SYSDATE)-22)/86400 from dual; These two SQL statements gave the error: ORA-00932: inconsistent datatypes If I try this one, it works. SELECT TRUNC(SYSDATE - 22), TO_DATE(TO_CHAR(TRUNC(SYSDATE-22+1), 'DD-MON-YYYY HH24:MI:SS'), 'DD-MON-YYYY HH24:MI:SS') from dual; Is there any way to improve this lengthly statement? Thanks, Wes --- Edgar Chupit <edgar.chupit@xxxxx> wrote: > Hello Wes, > > WB> WHERE TRUNC(last_update_date) = TRUNC(SYSDATE - 1) > WB> How to improve the performance? Do I need to create a new index field on > the table with > TRUNC(last_update_date)? > > You have several opportunities: > a) you can rewrite your query to this: > where last_update_date between trunc(sysdate)-1 and > trunc(sysdate)-1/86400 > b) you can create function based index like: > create index tt_idx on tt(trunc(last_update_date)); > c) you can add column to your table with values from trunc(last_update_date) > > What option to choose mostly depends on your requirements. ---------------------------------------------------------------- Please see the official ORACLE-L FAQ: http://www.orafaq.com ---------------------------------------------------------------- To unsubscribe send email to: oracle-l-request@xxxxxxxxxxxxx put 'unsubscribe' in the subject line. -- Archives are at //www.freelists.org/archives/oracle-l/ FAQ is at //www.freelists.org/help/fom-serve/cache/1.html -----------------------------------------------------------------