使用时间格式选择日期查询不适用于JDBCTemplate和util.Date

Sam*_*rai 5 java spring date jdbctemplate

我正在使用Spring JDBCTemplate来连接数据库.当我使用以下查询在DB中选择日期时

select to_date(valid_to,'DD-MM-YYYY HH24:MI:SS') from composition

输出是,31-12-99 23:59:59.

但是,当我使用JDBCTemplate时,如下所示,

Date d = jdbcTemplate.queryForObject("select to_date(valid_to,'DD-MM-YY HH24:MI:SS') from composition",Date.class);
Run Code Online (Sandbox Code Playgroud)

00:00:00.0出现在2099-12-31.

时间不对.我还需要Date类中的相同时间.怎么做到的?

Mar*_*eel 8

你需要使用java.sql.Timestamp.java.sql.Date没有时间组件,所以它的时间总是00:00:00.


use*_*961 5

java.sql.Date 不保留小时、分钟、秒和毫秒,因为它反映了 SQL 中的日期类型。只需要求一个 java.sql.Timestamp 而不是 Date。由于 Timestamp 是 java.util.Date 的子类型,所以可以直接询问。

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);
Run Code Online (Sandbox Code Playgroud)


Sam*_*rai 0

感谢您的所有回复。我找到了一种打发时间的方法。

String dateString = jdbcTemplate.queryForObject("select to_char(valis_to, 'DD-MM-YYYY HH24:MI:SS') from composition",String.class);
Date date = sdf.parse(dateString);
Run Code Online (Sandbox Code Playgroud)

  • 使用“java.sql.Timestamp”比依赖于特定 RDBMS 供应商实现的“to_char”转换要好得多。 (3认同)