在下面的代码中,我在查询中使用trunc(date)
,因为我只对日期感兴趣,而不对时间感兴趣。
但是,我得到了打印:
[[2019-11-28 00:00:00=653]
而不是[2019-11-28=653]
。
这里是代码:
Map<String, Integer> map = jdbcTemplate.query("select trunc(closing_date) as closing_date, count(*) as total from some_table group by closing_date", new ResultSetExtractor<Map>() {
@Override
public Map extractData(ResultSet rs) {
HashMap<String, Integer> mapRet = new HashMap<>();
while(rs.next()) {
mapRet.put(rs.getString("closing_date"), rs.getInt("total"));
}
return mapRet;
}
});
LOGGER.info(Arrays.toString(map.entrySet().toArray()));
为什么?
截断功能仅截断日期。它不会更改显示格式。
您可以根据需要使用to_char(date, 'yyyy-mm-dd')
显示日期。
干杯!
TRUNC()
从日期将时间舍入到午夜的意义上删除了日期的时间元素。但是Oracle DATE实际上实际上仍然是datetime,因此除非要使用仅显示date元素的格式掩码,否则要显示一个time元素。