问题
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?
回答1:
You need to use java.sql.Timestamp
. java.sql.Date
does not have a time component, so its time is always 00:00:00.
回答2:
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);
回答3:
You must be importing java.sql.Date
. Instead use java.util.Date
or java.util.Timestamp
.
java.sql.Date
will truncate time.
回答4:
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);
回答5:
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.
来源:https://stackoverflow.com/questions/17249574/select-date-query-with-time-format-is-not-working-with-jdbctemplate-and-util-dat