首页 > 解决方案 > 为什么这个查询结果会出现时间

问题描述

在下面的代码中,我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()));

为什么 ?

标签: javasqloracle

解决方案


TRUNC()删除日期的时间元素,因为它将时间向下舍入到午夜(以与trunc(23.42)我们相同的方式23)。但是 Oracle DATE 实际上仍然是一个日期时间,因此需要显示一个时间元素,除非我们使用仅显示日期元素的格式掩码。


推荐阅读