Select date query with time format is not working with JDBCTemplate and util.Date

て烟熏妆下的殇ゞ 提交于 2019-12-21 17:42:27

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!