关于使用JDBC查询数据时,日期类型数据后面多.0问题

我在项目中分别有使用mybatis和JDBC查询,mybatis查到的数据一切正常,但是JDBC查到的数据,日期后面总是会多.0,排查后发现是JDBC会将日期类型的数据自动转换为timestamp时间戳,但datetime类型精度只到秒,JDBC会将精度提升到毫秒级,并给予默认值0,于是就多了.0。

一般的解决办法是直接使用mysql的内置函数进行格式转换,但是我们项目的字段是由数据库配置,字段关联着其他配置的匹配,不能加函数。

我的解决是在数据库标记日期类型字段,对这一类字段做过滤,格式化。

import cn.venton.entity.DatasetList;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Map;

public class CleanStringUtil {
    public static List<Map<String, Object>> cleanString(List<Map<String, Object>> list, DatasetList datasetList) {
        if (datasetList.getTimeTypeColumn() == null) {
            return list;
        }
        String[] timeTypeColumn = datasetList.getTimeTypeColumn().split(",");
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        for (Map<String, Object> map : list) {
            for (String s : timeTypeColumn) {
                if (map.get(s) != null) {
                    map.put(s, df.format(map.get(s)));
                }
            }
        }
        return list;
    }
}

效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值