为什么时间出现在此查询结果中

时间:2019-11-28 16:36:57

标签: java sql oracle

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

为什么?

3 个答案:

答案 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';