用java在MySQL查询date类型数据出错的总结

总结:

以下是使用Java的JDBC,JDBCTemplate,Druid技术连接数据库

数据库中我设置的数据类型是date
java的dao中插入的数据类型是java.util.date
再次查询的时候不可以使用java.util.date下的,这样会报错

我的debug方法是:
	先输sql:如select * from 表名';
	在java下返回的date类型的数据是2021-02-16 00:00:00.0这样
	
我的解决办法:
	使用Date对象,SimpleDateFormat进行数据的格式化
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
		String strDate = sdf.format(new Date());
		
		try {
        String sql = "select * from earn where time = ? and user_id = ?";
        Earn earn = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Earn>(Earn.class),
                strDate, userId);
        return earn;
    } catch (DataAccessException e) {
        e.printStackTrace();
        return null;
    }

那么为什么会出现这样的问题呢?

我测试了下:
	在数据库环境中使用以下语句插入:
		INSERT INTO pay VALUES(NULL, 50, 0, 0, '2021-02-16 10:00:00.0', 1);
		语句中的日期代表了java.uti.date下的new Date()即当前时间,
		当我这样插入数据库后,数据库自动将去除时间,只保留
		年月日,因为数据库中Date只存储年月日

所以为了避免java中的Date和数据库中的Date数据格式不一致,
使用SimpleDateFormat将java的Date统一成和数据库中
一致的类型即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值