Skip to Main Content

Java Database Connectivity (JDBC)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

about date timestamp column data type

41925Apr 20 2005 — edited Apr 21 2005
In past 2 days, I tried to get to know how Oracle JDBC driver deal with table's column with Date or Timestamp data type. I have finished some test. I'd like to show the result below.

The main issue is difference behavior between driver version 9i and 10g.

Runtime Environments:

1, Sun JDK 1.4.2_04

2, Oracle Application Server 10.1.0.2
Installed at D:/oc4j1012

3, Oracle JDBC Driver 10g :
quote from D:/oc4j1012/jdbc/lib/ojdbc14.jar/META-INF/MANIFEST.MF

Implementation-Version: "Oracle JDBC Driver version - 10.1.0.3.0"
Specification-Title: "Oracle JDBC driver classes for use with JDK1.4"
Specification-Version: "Oracle JDBC Driver version - 10.1.0.3.0"
Implementation-Title: "ojdbc14.jar"
Implementation-Time: "Mon Nov 22 12:08:18 2004"

4, Oracle JDBC Driver 9.2.0.1.0 :
quote from D:/oracle/ora92/jdbc/lib/ojdbc14.jar/META-INF/MANIFEST.MF

Specification-Title: "Oracle JDBC driver classes for use with JDK1.4"
Specification-Version: "Oracle JDBC Driver version - 9.0.2.0.0"
Specification-Vendor: "Oracle Corporation" .
Implementation-Title: "ojdbc14_g.jar"
Implementation-Version: "Oracle JDBC Driver version - 9.0.2.0.0"
Implementation-Vendor: "Oracle Corporation"
Implementation-Time: "Thu Apr 25 23:48:25 2002"

5, Oracle JDBC Driver 9.2.0.5.0:
I download this ojdbc14.jar from otn web site.

Specification-Title: "Oracle JDBC driver classes for use with JDK1.4"
Specification-Version: "Oracle JDBC Driver version - 9.0.2.0.0"
Specification-Vendor: "Oracle Corporation" .
Implementation-Title: "ojdbc14.jar"
Implementation-Version: "Oracle JDBC Driver version - 9.0.2.0.0"
Implementation-Vendor: "Oracle Corporation"
Implementation-Time: "Tue Apr 6 01:10:57 2004"

6, Database Server and Table

Database Server:

Oracle9i Enterprise Edition Release 9.2.0.6.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.6.0 - Production

Table for test:

CREATE TABLE AA_TEMP
(
D1 DATE,
D2 TIMESTAMP(3)
)

INSERT INTO AA_TEMP (D1, D2 ) VALUES ( TO_Date( '04/20/2005 12:22:22', 'MM/DD/YYYY HH:MI:SS AM'), 2005-4-20 22:22:35.000000);

7, The test program executes a simple query, select * from AA_TEMP.

Resultset rs = ......

ResultSetMetaData rsmd = rs.getMetaData();

int t1 = rsmd.getColumnType(1)
int t2 = rsmd.getColumnType(2)

Object o1 = rs.getObject(1)
Object o2 = rs.getObject(2)

String c1 = o1.getClass().getName();
String c2 = o2.getClass().getName();

8, Test result
case 1) When using driver version 9.0.2.1.0
t1 = 91 (java.sql.Types.DATE)
c1 = java.sql.Timestamp

t2 = 93 (java.sql.Types.TIMESTAMP)
c2 = oracle.sql.TIMESTAMP

case 2) When using driver version 9.0.2.5.0
t1 = 91 (java.sql.Types.DATE)
c1 = java.sql.Timestamp

t2 = 93 (java.sql.Types.TIMESTAMP)
c2 = oracle.sql.DATE

case 3) When using driver version 10g, just put D:/oc4j1012/jdbc/lib/ojdbc14.jar into CLASSPATH
t1 = 91 (java.sql.Types.DATE)
c1 = java.sql.Date. Only data of part of year, month, day, even if this column data include hour, minute, second component

t2 = 93 (java.sql.Types.TIMESTAMP)
c2 = oracle.sql.TIMESTAMP

case 4) When using driver version 10g, just put D:/oc4j1012/j2ee/home/oc4j.jar into CLASSPATH, don't put D:/oc4j1012/jdbc/lib/ojdbc14.jar into CLASSPATH directly.
t1 = 91 (java.sql.Types.DATE)
c1 = java.sql.Date. Only data of part of year, month, day, even if this column data include hour, minute, second component

t2 = 93 (java.sql.Types.TIMESTAMP)
c2 = java.sql.Timestamp

According to JDBC specification, Date mapped into java.sql.Date, Timestamp mapped into java.sql.Timestamp

Only in last case, the driver fully apply for JDBC specification. I notice in this case, actually, the program runs just like in Oracle Application Server environment. I just put D:/oc4j1012/j2ee/home/oc4j.jar into CLASSPATH, I don't put D:/oc4j1012/jdbc/lib/ojdbc14.jar into CLASSPATH directly. It must be oc4j.jar makes the mystery. Does it a mystery? It does'nt. But It's so funny.

oc4j.jar reference other jar files at runtime. Quote from oc4j.jar/META-INF/MANIFEST.MF:
Main-Class: com.evermind.server.OC4JServer
Class-Path: lib/ejb.jar lib/servlet.jar lib/ojsp.jar lib/jndi.jar lib/
jdbc.jar iiop.jar iiop_gen_bin.jar lib/jms.jar lib/jta.jar lib/jmxri
.jar lib/javax77.jar lib/javax88.jar ../../opmn/lib/ons.jar ../../op
mn/lib/optic.jar ../../lib/dms.jar ../../dms/lib/dms.jar ../../diagno
stics/lib/ojdl.jar ../../dms/diagnostics/lib/ojdl.jar lib/connector.
jar lib/bcel.jar lib/cos.jar lib/jsse.jar ../../oracle/lib/jsse.jar
lib/jnet.jar lib/jcert.jar lib/activation.jar lib/mail.jar ../../java
vm/lib/jasper.zip ../../lib/xmlparserv2.jar ../../oracle/lib/xmlparse
rv2.jar ../../jdbc/lib/orai18n.jar ../../oracle/jdbc/lib/orai18n.jar
lib/jaxp.jar lib/jaas.jar jazn.jar ../../jdbc/lib/classes12dms.jar ..
/../oracle/jdbc/lib/classes12dms.jar ../../jdbc/lib/nls_charset12.jar
../../oracle/jdbc/lib/nls_charset12.jar jaxb-rt-1.0-ea.jar ../../so
ap/lib/soap.jar ../../webservices/lib/wsserver.jar ../../webservices/
lib/wsdl.jar ../../rdbms/jlib/aqapi.jar lib/jem.jar ../../javacache/l
ib/cache.jar lib/http_client.jar ../../jlib/jssl-1_1.jar ../../oracle
/jlib/jssl-1_1.jar ../../jlib/repository.jar ../../oracle/jlib/reposi
tory.jar lib/jaasmodules.jar ../../sqlj/lib/runtime12ee.jar ../../sql
j/lib/translator.jar lib/crimson.jar ../../jlib/ojpcs.jar ../../oracl
e/jlib/ojpcs.jar ../../jlib/ojpcp.jar ../../oracle/jlib/ojpcp.jar ../
../jlib/ojpse.jar ../../oracle/jlib/ojpse.jar ../../jlib/ojpsmime.jar
../../oracle/jlib/ojpsmime.jar ../../jlib/ojpcms.jar ../../oracle/jl
ib/ojpcms.jar

9, If my program runs under non OAS(Oracle Application Server) system, How should I deal with Date or Timestamp data type?

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on May 19 2005
Added on Apr 20 2005
5 comments
1,931 views