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

Home -> Community -> Usenet -> c.d.o.misc -> Re: Return minutes as date datatype ++ implicit datatype conversion

Re: Return minutes as date datatype ++ implicit datatype conversion

From: Mark C. Stock <mcstockX_at_Xenquery>
Date: Thu, 22 Jul 2004 08:06:56 -0400
Message-ID: <s9adnfXHz_usM2LdRVn-pg@comcast.com>

"Craig & Co." <crb_at_amsa.gov.au> wrote in message news:40ff4f51$0$51369$c30e37c6_at_lon-reader.news.telstra.net...
| > 1* select To_Char(sysdate,'HH24MI') from dual
| > SQL> /
| >
| > TO_C
| > ----
| > 1725
| >
| > Seems numeric enough to me?
|
| That's the way I'd do it.
|
| Craig.
|
|

beware of implicit datatype conversions -- to_char returns a VARCHAR2 datatype, and any code that checks the datatype may not function as assumed

in this example SQL*Plus is asked to compute an average on the hiretime column and is unable to do so with the TO_CHAR expression -- properly converting it to a number yields the correct results:

SQL> break on report
SQL> compute avg of hiretime on report

SQL> select ename, hiredate, to_char(hiredate,'hh24mi') as hiretime from emp;

ENAME HIREDATE HIRE

---------- --------- ----
SMITH      17-DEC-80 0001
ALLEN      20-FEB-01 0002
WARD       22-FEB-81 0003
JONES      02-APR-81 0004
MARTIN     28-SEP-01 0005
CLARK      09-JUN-81 0006
SCOTT      09-DEC-82 0007
KING       17-NOV-81 0008
TURNER     08-SEP-81 0009
Adams      12-JAN-83 0010
JAMES      03-DEC-81 0011
FORD       03-DEC-81 0012
MILLER     23-JAN-82 0013
                     ----

13 rows selected.

SQL> select ename, hiredate, to_number(to_char(hiredate,'hh24mi')) as hiretime from emp;

ENAME HIREDATE HIRETIME

---------- --------- ----------
SMITH      17-DEC-80          1
ALLEN      20-FEB-01          2
WARD       22-FEB-81          3
JONES      02-APR-81          4
MARTIN     28-SEP-01          5
CLARK      09-JUN-81          6
SCOTT      09-DEC-82          7
KING       17-NOV-81          8
TURNER     08-SEP-81          9
Adams      12-JAN-83         10
JAMES      03-DEC-81         11
FORD       03-DEC-81         12
MILLER     23-JAN-82         13
                     ----------
avg                           7

13 rows selected.

++ mcs Received on Thu Jul 22 2004 - 07:06:56 CDT

Original text of this message

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