在下面的代码中,我在查询中使用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()));
为什么?
答案 0 :(得分:1)
Trunc函数仅截断日期。它不会更改显示格式。
您可以根据需要使用to_char(date, 'yyyy-mm-dd')
显示日期。
干杯!
答案 1 :(得分:1)
TRUNC()
从将时间向下舍入到午夜的意义上删除了日期的时间元素(与trunc(23.42)
给我们23
的方式一样)。但是Oracle DATE实际上实际上仍然是 datetime ,因此除非要使用仅显示date元素的格式掩码,否则要显示一个time元素。
答案 2 :(得分:0)
从Java连接到Oracle数据库时,如果您可以通过下面的Alter session命令,那么它可以解决您的问题。
更改会话集NLS_DATE_FORMAT ='DD-MON-YYYY';