Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> RE: I was told there would be no (date) math

RE: I was told there would be no (date) math

From: <oracle-l-bounce_at_freelists.org>
Date: Thu, 13 Apr 2006 12:22:43 -0500
Message-ID: <FB5D3CCFCECC2948B5DCF4CABDBE66975460D4@QTEX1.qg.com>


Hmmm:

SELECT DUMP(SYSDATE - SYSDATE) FROM dual;

DUMP(SYSDATE-SYSDATE)



Typ=14 Len=8: 0,0,0,0,0,0,0,0

But according to the Oracle9i SQL Reference Release 2 (9.2) Part Number A96540-02, section titled "Datatypes", there is no type "14".

Similarly, when subtracting a number from a date:

SELECT DUMP(SYSDATE - 1) FROM dual;

DUMP(SYSDATE-1)



Typ=13 Len=8: 7,214,4,12,12,16,3,0

And there is no type "13" listed, either. One could ASSuME that 13 and 14 are dates, given that type 12 is, and Metalink article 69028.1 mentions "External datatype 13 is an internal c-structure whose length varies depending on how the c-compiler represents the structure.", but that's all I could find.

Thanks all for the clarification on this. There seemed to be some undocumented features at work here that was making me curious.

Rich

-----Original Message-----
From: Ken Naim [mailto:kennaim_at_gmail.com] Sent: Thursday, April 13, 2006 12:03 PM
To: Jesse, Rich; oracle-l_at_freelists.org
Subject: RE: I was told there would be no (date) math

When you subtract two dates you get a number and sql follows order of operations so it goes from left to right.

Trunc(sysdate)- Trunc(sysdate) - Trunc(sysdate) becomes 1- trunc(sysdate) which throws the error as you cannot subtract a date from
a number

With the parenthesis the way you have it you start with TRUNC(SYSDATE) - (TRUNC(SYSDATE) - TRUNC(SYSDATE)) which becomes TRUNC(SYSDATE) - 1 which is fine.

If you would switch the parenthesis to
(TRUNC(SYSDATE) - TRUNC(SYSDATE)) - TRUNC(SYSDATE) you would get the
same
error as it would become 1- trunc(sysdate)

Ken Naim

-----Original Message-----
From: oracle-l-bounce_at_freelists.org
[mailto:oracle-l-bounce_at_freelists.org]
On Behalf Of Jesse, Rich
Sent: Thursday, April 13, 2006 8:52 AM
To: oracle-l_at_freelists.org
Subject: I was told there would be no (date) math

Hey all,

While debugging an analytical function issue using 9.2.0.5, I run this idiotic query:

SELECT TRUNC(SYSDATE) - TRUNC(SYSDATE) - TRUNC(SYSDATE) FROM DUAL; And it errors out with:

ORA-00932: inconsistent datatypes: expected DATE got DATE

(In 10.2, the verbage is modified to "expected JULIAN DATE got DATE")

Add parenthesis and it works:

SELECT TRUNC(SYSDATE) - (TRUNC(SYSDATE) - TRUNC(SYSDATE)) FROM DUAL; I've been looking through the docs and Metalink, but I'm unable to answer "Why?". Anyone?

TIA!
Rich

--
http://www.freelists.org/webpage/oracle-l
--
http://www.freelists.org/webpage/oracle-l
Received on Thu Apr 13 2006 - 12:22:43 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US