java - 为什么这个查询结果会出现时间
问题描述
在下面的代码中,我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()));
为什么 ?
解决方案
TRUNC()
删除日期的时间元素,因为它将时间向下舍入到午夜(以与trunc(23.42)
我们相同的方式23
)。但是 Oracle DATE 实际上仍然是一个日期时间,因此需要显示一个时间元素,除非我们使用仅显示日期元素的格式掩码。
推荐阅读
- azure - Azure 机器学习设计器 - 编辑加载时卡住的列
- javascript - JavaScript 游戏(画布)角色移动和图像显示
- python - 无法解码 JWT 令牌
- php - Mysqli bind_param 未设置但仍在执行
- excel - SharePoint、Excel、CDN 数据表
- python - 单个单元格中的多个数据的相关性分析
- javascript - 如何将事件对象添加到回调函数?
- git - 如何从 GitHub 版本下载所有文件?
- opencart-3 - 编辑 OC3 特色模块容器背景颜色
- c++ - 如何通过使用 LibJIT 编译的函数传递 C++ 异常?