Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1552
  • Last Modified:

Oracle/JDBC. SimpleDateFormat on Date column returns time as 00:00:00 (yyyy-MM-dd HH:mm:ss)

Why is it not returning the actual time?

Example:
In Oracle a date column holding: 28-09-2004 10:19:50

Connection connection = CachedConnectionFactory.getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("select col1 from datetest"); //col1 is a date column
SimpleDateFormat simpledateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

simpledateformat.format(date) returns "2004-09-28 00:00:00"


ResultSet resultSet = statement.executeQuery("select to_char(col1,'dd-mm-yyyy hh24:mi:ss') col1 from datetest");
return the string "28-09-2004 10:19:50"

Oracle 9.2.0.2.1
Java 1.3 something
0
jerra
Asked:
jerra
  • 6
  • 5
  • 4
2 Solutions
 
girionisCommented:
Check if the date is saved as Timestamp in the database. If it is try to read the column as Timestamp and not as Date:

0
 
CEHJCommented:
You need to use java.util.Date
0
 
CEHJCommented:
java.util.Date d = rs.getTimestamp("x").getTimestamp();
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
CEHJCommented:
Sorry

java.util.Date d = new java.util.Date(rs.getTimestamp("x").getTime());
0
 
jerraAuthor Commented:
No it is saved as a date. It is actually sysdate inserted into the column.

>You need to use java.util.Date
How?
0
 
CEHJCommented:
>>How?

See above
0
 
girionisCommented:
> No it is saved as a date. It is actually sysdate inserted into the column.

> >You need to use java.util.Date
> How?

You might as well use:

Timestamp date = rs.getTimeStamp("columnname");
simpledateformat.format(date)
0
 
jerraAuthor Commented:
My program dynamically determines the column type from a not specified table.
...
resultSetMetaData.getColumnType(index) == Types.DATE

so instead I have to treat every date column unconditionally as timestamp? awkward...
0
 
CEHJCommented:
Columns are usually able to be treated as Timestamp anyway. You could always do

Object column = rs.getObject(x);
if (columns instanceof Timestamp) {
   //
}
else if (column instanceof java.sql.Date) {
   //
}
0
 
girionisCommented:
Is there any type defined for TIMESTAMP in the table? If yes use that. But if it is a Timestamp datat type in the database then you should be using a Timestamp.
0
 
girionisCommented:
You might as well do:

resultSetMetaData.getColumnType(index) == Types.TIMESTAMP
0
 
jerraAuthor Commented:
>Is there any type defined for TIMESTAMP in the table?
no the datatype is Date
0
 
jerraAuthor Commented:
Thanks for your help. Excellent!
0
 
girionisCommented:
:)
0
 
CEHJCommented:
8-)
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 6
  • 5
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now