Reputation: 843
I am using Spring JDBCTemplate to conneect DB. When I am selecting date in DB using below query
select to_date(valid_to,'DD-MM-YYYY HH24:MI:SS') from composition
output is, 31-12-99 23:59:59.
But, when I am using the same with JDBCTemplate like below,
Date d = jdbcTemplate.queryForObject("select to_date(valid_to,'DD-MM-YY HH24:MI:SS') from composition",Date.class);
outpt is 2099-12-31 00:00:00.0.
Time is not correct. I also need the same time in Date class. How to get that?
Upvotes: 6
Views: 33535
Reputation: 176
Java 8 allows us to use a better suited Date classes (in java.time.*).
The convertion from LocalDate (java) to sql date is done by: java.sql.Date.valueOf(LocalDate.of(2012, Month.DECEMBER, 12))
Oracle advise to use java 8 Dates instead of the oldest version :
These classes had several drawbacks, including:
The Calendar class was not type safe.
Because the classes were mutable, they could not be used in multithreaded applications.
Bugs in application code were common due to the unusual numbering of months and the lack of type safety.
Upvotes: 0
Reputation: 2490
java.sql.Date don't retain the hours, minutes, seconds and milliseconds since it mirrors the date type in SQL. Simply ask for a java.sql.Timestamp instead of a Date. Since Timestamp is a subtype of java.util.Date, you can ask it directly.
import java.util.Date;
import java.sql.Timestamp;
[...]
Date d = jdbcTemplate.queryForObject("select to_date(valid_to,'DD-MM-YY HH24:MI:SS') from index_composition", Timestamp.class);
Upvotes: 5
Reputation: 843
Thanks for all your response. I found a way to take the time.
String dateString = jdbcTemplate.queryForObject("select to_char(valis_to, 'DD-MM-YYYY HH24:MI:SS') from composition",String.class);
Date date = sdf.parse(dateString);
Upvotes: 0
Reputation: 108999
You need to use java.sql.Timestamp
. java.sql.Date
does not have a time component, so its time is always 00:00:00.
Upvotes: 8
Reputation: 7940
You must be importing java.sql.Date
. Instead use java.util.Date
or java.util.Timestamp
.
java.sql.Date
will truncate time.
Upvotes: 1