Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> RE: SQL Tunning
Wes,
Dates are "funny" data types. They contain both the date & time which = is where your getting messed up. Trunc(sysdate) returns the sysdate, = but with time zeroed out or "04-AUG-04 00:00:00". = Trunc(sysdate)-22/86400 is returning the truncated date with 22 seconds = subtracted or "03-AUG-04 23:59:38". Now using trunc(last_update_date) = in your where clause is crippling your index, therefore using the = "last_update_date between trunc(sysdate-1) and trunc(sysdate)" is better = since you don't have to apply a function to your data one row at a time. = Your asking Oracle to determine if the date is >=3D "03-AUG-04 = 00:00:00" and <=3D "04-AUG-04 00:00:00". Dividing dates just makes no = sense at all, like a divide by 0.
Dick Goulet
Senior Oracle DBA
Oracle Certified 8i DBA
-----Original Message-----
From: Wes Brooks [mailto:wes_brooks_at_yahoo.com]
Sent: Tuesday, August 03, 2004 11:54 AM
To: oracle-l_at_freelists.org
Subject: Re: SQL Tunning
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=20
SELECT TRUNC(SYSDATE)-22/86400 from dual;
TRUNC(SYS
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
> Hello Wes,
>=20
>=20
-- Archives are at http://www.freelists.org/archives/oracle-l/ FAQ is at http://www.freelists.org/help/fom-serve/cache/1.html ----------------------------------------------------------------- ---------------------------------------------------------------- Please see the official ORACLE-L FAQ: http://www.orafaq.com ---------------------------------------------------------------- To unsubscribe send email to: oracle-l-request_at_freelists.org put 'unsubscribe' in the subject line. -- Archives are at http://www.freelists.org/archives/oracle-l/ FAQ is at http://www.freelists.org/help/fom-serve/cache/1.html -----------------------------------------------------------------Received on Tue Aug 03 2004 - 11:26:09 CDT
![]() |
![]() |